- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我用了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/
我用了SOFT_INPUT_ADJUST_RESIZE为了在键盘弹出时显示所有内容。 按照文档,我添加了新的代码 fragment : if (Build.VERSION.SDK_INT >= Bui
我有一个 PopupWindow 锚定在一个按钮上(在顶部)。 PopupWindow 包含一个 ScrollView。PopupWindow 处于 SOFT_INPUT_ADJUST_RESIZE
我有以下自定义 View DialogFragment。 当我点击 EditText 时,会显示软键盘。目前,观察结果是 对话框的位置有点“上推”。 对话框未调整大小且对话框内容被阻止。 这是它的样子
我在主 Activity 的 onCreate 中有以下代码: getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_
我是一名优秀的程序员,十分优秀!