Клавиатура мягкого ввода перемещает мой статический вид снизу вверх Android Kotlin

#android #keyboard #android-viewpager #android-softkeyboard #android-viewpager2

#Android #клавиатура #android-viewpager #android-softkeyboard #android-viewpager2

Вопрос:

У меня есть фрагмент со статическим видом сверху, статическим видом снизу и ViewPager2 в середине этих 2 видов.(Посмотрите на картинку 1 в предоставленной ссылке). У меня проблема, когда отображается клавиатура, мой нижний статический вид перемещается вверх. Я перепробовал все методы мягкого ввода Android и некоторый связанный с этим код, какой-то другой код в stackoverflow, но он не работает.

 android:windowSoftInputMode="stateAlwaysHidden|adjustPan" //does not work
  

То, что я пытаюсь сделать, это скрыть этот статический вид снизу, как на рисунке 2:

Я заархивировал то, что искал, с помощью этого кода:

  binding.parentConstrint.viewTreeObserver.addOnGlobalLayoutListener {
            val r = Rect()
            binding.parentConstrint.getWindowVisibleDisplayFrame(r)
            val screenHeight = binding.parentConstrint.rootView.height
            val keypadHeight = screenHeight - r.bottom
            if (keypadHeight > screenHeight * 0.15) {
                if (!isKeyboardShowing) {
                    isKeyboardShowing = true
                    binding.bottomView.gone()
                }
            }else {
                if (isKeyboardShowing) {
                    isKeyboardShowing = false
                    binding.bottomView.visible()
                }
            }
        }
  

Но это как бы обновляет весь мой вид, когда этот вид снизу появляется и исчезает, и я вижу, что обновление происходит моими глазами. Есть идеи, как остановить это обновление или сделать это другим способом?

Ответ №1:

Удалите прослушиватель макета и используйте:

 android:windowSoftInputMode="stateHidden|adjustNothing"
  

В противном случае попробуйте удалить и эту последнюю строку из манифеста

Комментарии:

1. опубликуйте макет, это может быть полезно

2. я не могу опубликовать это. Но это так -> ConstraintLayout ---->RelativeLayout(topview) i tried Constraint too. ---->ViewPager2 ---->ConstraintLayout(bottomView) ->/Constraint