Hier ist mein Fragment-XML. Ich füge android:fitsSystemWindows="true" hinzu, weil es erforderlich war, dass der Insets-Listener ausgelöst wurde.
Code: Select all
...
Code: Select all
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]
Hier ist der untere Navigationsbildschirm, bevor die Tastatur sichtbar ist.

Und hier ist das Bild, nachdem die Tastatur sichtbar ist.

Eigentlich, wenn ich das Verhalten beobachte. Das Problem wurde dadurch ausgelöst, dass ich von einer Symbolleiste aus zurückgekehrt bin, als die Tastatur angezeigt wurde, wodurch der Insets-Listener nie aufgerufen wurde.
Wenn ich von der Rückseite aus gedrückt habe, um die Tastatur zuerst zu schließen und dann zurück, wird der Insets-Listener ausgelöst.