Вот мой XML-фрагмент. Я добавляю android:fitsSystemWindows="true", потому что это необходимо для запуска прослушивателя вставок.
Код: Выделить всё
...
Код: Выделить всё
private fun observeKeyboardChange() {
binding?.clStreamCreatePost?.post {
val view = binding?.clStreamCreatePost ?: return@post
ViewCompat.setOnApplyWindowInsetsListener(view) { v, insets ->
val imeVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
val statusBarHeight = insets.getInsets(WindowInsetsCompat.Type.statusBars()).top
val imeHeight = insets.getInsets(WindowInsetsCompat.Type.ime()).bottom
Toast.makeText(requireContext(), "imeVisible=$imeVisible", Toast.LENGTH_SHORT).show()
// I want clear focus my textfield when keyboard is hidden
if (!imeVisible) v.clearFocus()
v.updatePadding(
top = 0,
bottom = imeHeight
)
insets
}
}
}
[img]https:// i.sstatic.net/A2274mm8m.png[/img]
Вот нижний экран навигации до того, как будет видна клавиатура.

А вот изображение после того, как клавиатура видна.

На самом деле, когда я наблюдаю за поведением. Проблема возникла из-за того, что я вернулся из панели инструментов, когда отображается клавиатура, которая никогда не вызывает прослушиватель вставок.
Когда я возвращаюсь из обратного нажатия, которое сначала отключает клавиатуру, а затем обратно, это запускает прослушиватель вставок.
Подробнее здесь: https://stackoverflow.com/questions/793 ... s-listener
Мобильная версия