【问题标题】:WindowInsetsCompat.isVisible(WindowInsetsCompat.Type.ime()) returns true for Android 23-29, though keyboard is not openedWindowInsetsCompat.isVisible(WindowInsetsCompat.Type.ime()) 对于 Android 23-29 返回 true,但未打开键盘
【发布时间】:2021-10-08 12:47:40
【问题描述】:

如果打开键盘,则下一个代码在 Android 11 (30 API) 上返回 true(对于 showingKeyboard),否则返回 false

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)
}

在 Android 6-10 (23-29) 上,即使键盘未打开(不可见),它也会返回 true

【问题讨论】:

    标签: android android-virtual-keyboard android-window


    【解决方案1】:

    尝试在 AndroidManifest.xml 文件中将android:windowSoftInputMode="adjustResize" 添加到您的活动中。

    还可以查看此答案以获取更多详细信息:https://stackoverflow.com/a/66805360/949280

    【讨论】:

      猜你喜欢
      • 2017-02-15
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2014-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多