#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