gpt4 book ai didi

android - SOFT_INPUT_ADJUST_RESIZE 从 android 30 开始弃用

转载 作者:行者123 更新时间:2023-12-04 23:41:38 26 4
gpt4 key购买 nike

我用了SOFT_INPUT_ADJUST_RESIZE为了在键盘弹出时显示所有内容。
按照文档,我添加了新的代码 fragment :

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
requireActivity().window.setDecorFitsSystemWindows(false)
}
binding.constraintLayoutRoot.setOnApplyWindowInsetsListener { _, windowInsets ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val insets = windowInsets.getInsets(WindowInsets.Type.ime() or WindowInsets.Type.systemGestures())
insets
}

windowInsets
}
出于某种原因, View 不会根据键盘是否出现来调整大小。

最佳答案

根据来自 Android API 30 的谷歌开发人员,他们已弃用它并向我们提供了解决方法 setDecorFitsSystemWindows .但这在 Android 30 以下不起作用,对于 30 以下,您必须使用与以前相同的方法。
工作原理:
setDecorFitsSystemWindows 真实
框架将检查 SYSTEM_UI_LAYOUT_FLAGS 以及 WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE 标志并根据这些标志适合内容。
但是当它设置为 错误 该框架将不适合 insets 的内容 View ,并将检查您的 WindowInsets 以设置内容 View 。
首先,您必须定义它可以使用的 windowsInsets

binding.root.setOnApplyWindowInsetsListener { _, windowInsets ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
val imeHeight = windowInsets.getInsets(WindowInsets.Type.ime()).bottom
binding.root.setPadding(0, 0, 0, imeHeight)
}
windowInsets
}
然后当你希望你的屏幕使用 ADUST_RESIZE 设置为假
setDecorFitsSystemWindows(false)
当你想恢复正常设置 true
setDecorFitsSystemWindows(true)
管理 API 30 以上和以下使用条件
var shouldResize = false // false will resize
binding.button.setOnClickListener {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setDecorFitsSystemWindows(shouldResize)
shouldResize = shouldResize.not()
} else {
if (shouldResize.not()) {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)
} else {
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
}
}
}
引用链接:

Android SOFT_INPUT_ADJUST_RESIZE
Android setDecorFitsSystemWindows

关于android - SOFT_INPUT_ADJUST_RESIZE 从 android 30 开始弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68003131/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com