Reputation: 12293
If keyboard is opened the next code returns true
(for showingKeyboard
) on Android 11 (30 API) or false
otherwise:
private fun registerGlobalLayoutListener() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.viewTreeObserver.addOnGlobalLayoutListener(globalLayoutListener)
}
}
private fun unregisterGlobalLayoutListener() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
window.decorView.viewTreeObserver.removeOnGlobalLayoutListener(globalLayoutListener)
}
}
@RequiresApi(Build.VERSION_CODES.M)
private val globalLayoutListener = ViewTreeObserver.OnGlobalLayoutListener {
val showingKeyboard =
WindowInsetsCompat.toWindowInsetsCompat(window.decorView.rootWindowInsets)
.isVisible(WindowInsetsCompat.Type.ime())
viewModel.setKeyboardShowing(showingKeyboard)
}
On Android 6-10 (23-29) it returns true
even if keyboard is not opened (not visible)
Upvotes: 1
Views: 1673
Reputation: 2189
Try adding android:windowSoftInputMode="adjustResize"
to your activity in the AndroidManifest.xml file.
Also check this answer for more details: https://stackoverflow.com/a/66805360/949280
Upvotes: 0