Merge branch 'fix/pad_display_issue' into 'dev'

fix: 低版本系统不支持新 API 导致获取不到软键盘高度的问题 https://jira.shanqu.cc/browse/GHZS-2639

See merge request halo/android/assistant-android!1107
This commit is contained in:
陈君陶
2023-06-09 16:40:49 +08:00

View File

@ -308,9 +308,14 @@ open class NewCommentFragment : ListFragment<CommentEntity, NewCommentViewModel>
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