@@ -120,7 +120,7 @@ class FragmentNewMap : Fragment(), GoogleMap.OnCameraIdleListener, OnMapReadyCal
120120 if (keyboardManager != null ) {
121121 val keyboardManager = keyboardManager!!
122122 keyboardManager.closeKeyboard()
123- keyboardManager.removeAllListeners( )
123+ keyboardManager.removeKeyboardListener(keyboardListener )
124124 keyboardInitialized.set(false )
125125 }
126126 }
@@ -208,48 +208,50 @@ class FragmentNewMap : Fragment(), GoogleMap.OnCameraIdleListener, OnMapReadyCal
208208 this .type = type
209209 }
210210
211+ private val keyboardListener: KeyboardListener = { opened, keyboardHeight ->
212+ val (position, navbarHeight) = navbarSize(activity!! )
213+ // check payloads
214+ when (opened) {
215+ true -> {
216+ if (position == Assist .NavBarPosition .BOTTOM ) {
217+ val top = searchOriginalMargin +
218+ keyboardHeight +
219+ map_menu_button.height +
220+ edittext_map_search.paddingBottom +
221+ edittext_map_search.paddingTop + edittext_map_search.height
222+
223+ map_ui_parent.setBottomMargin(searchOriginalMargin + keyboardHeight)
224+ map?.setPadding(map_ui_parent.paddingLeft, 0 , 0 , top)
225+ }
226+ }
227+ false -> {
228+ if (position == Assist .NavBarPosition .BOTTOM ) {
229+ map_ui_parent.setBottomMargin(searchOriginalMargin + navbarHeight.y + 32 .dpAsPx)
230+ map?.setPadding(0 , 0 , 0 , navbarHeight.y)
231+ } else {
232+ map_ui_parent.setBottomMargin(searchOriginalMargin + 32 .dpAsPx)
233+ map?.setPadding(0 , 0 , 0 , 0 )
234+ }
235+ }
236+ }
237+
238+ // Update map_menu_button position after UI has been redrawn
239+ map_menu_button.post {
240+ map_menu_button.moveToState(map_menu_button.state, false )
241+ }
242+ }
243+
244+
211245 private fun initializeKeyboardDetection () {
212246 if (keyboardInitialized.get())
213247 keyboardManager!! .onDisplaySizeChanged()
214248 else {
215- val (position, navbarHeight) = navbarSize(activity!! )
216249 if (keyboardManager == null ) {
217250 searchOriginalMargin = (map_ui_parent.layoutParams as ConstraintLayout .LayoutParams ).bottomMargin
218251 keyboardManager = KeyboardManager (fragmentView!! .rootView)
219252 }
220253
221- keyboardManager!! .addKeyboardListener { opened, keyboardHeight ->
222- // Log.d("TAG", "State is " + (if (opened) "OPEN" else "CLOSED") + " with margin " + (if (opened) searchOriginalMargin else (searchOriginalMargin + navbarHeight)))
223- when (opened) {
224- true -> {
225- if (position == Assist .NavBarPosition .BOTTOM ) {
226- val top = searchOriginalMargin +
227- keyboardHeight +
228- map_menu_button.height +
229- edittext_map_search.paddingBottom +
230- edittext_map_search.paddingTop + edittext_map_search.height
231-
232- map_ui_parent.setBottomMargin(searchOriginalMargin + keyboardHeight)
233- map?.setPadding(map_ui_parent.paddingLeft, 0 , 0 , top)
234- }
235- }
236- false -> {
237- if (position == Assist .NavBarPosition .BOTTOM ) {
238- map_ui_parent.setBottomMargin(searchOriginalMargin + navbarHeight.y + 32 .dpAsPx)
239- map?.setPadding(0 , 0 , 0 , navbarHeight.y)
240- } else {
241- map_ui_parent.setBottomMargin(searchOriginalMargin + 32 .dpAsPx)
242- map?.setPadding(0 , 0 , 0 , 0 )
243- }
244- }
245- }
246-
247- // Update map_menu_button position after UI has been redrawn
248- map_menu_button.post {
249- map_menu_button.moveToState(map_menu_button.state, false )
250- }
251- }
252-
254+ keyboardManager!! .addKeyboardListener(keyboardListener)
253255 keyboardInitialized.set(true )
254256 }
255257 }
0 commit comments