diff --git a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt index f78a5606a2..a91484ec2c 100644 --- a/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt +++ b/app/src/main/java/com/gh/gamecenter/qa/comment/NewCommentFragment.kt @@ -308,9 +308,14 @@ open class NewCommentFragment : ListFragment commentContainer?.layoutParams = layoutParams } + // 判断是否处于平板的平行视界模式 + val configString = requireContext().resources.configuration.toString() + val isMagicMode = configString.contains("magic-window") || configString.contains("window-magic") + // 平板上的导航方式改成按键时,使用 KeyboardHeightProvider 的 PopupWindow 会拦截掉所有的触摸事件 - // 换成在 Android 5.1 以后监听 WindowInsets 的实现 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + // 根据测试 Android 11 以前的系统用 WindowInsetsCompat.Type.ime()).bottom 获取不到正确的值 + // 所以仅在系统为大于 10 且处于平行视界模式时才切换实现 + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R && isMagicMode) { ViewCompat.setOnApplyWindowInsetsListener(requireActivity().window.decorView) { _: View?, insets: WindowInsetsCompat -> onKeyboardHeightChanged(insets.getInsets(WindowInsetsCompat.Type.ime()).bottom, 0) insets