当键盘弹出时,我使用SOFT_INPUT_ADJUST_RESIZE
来显示所有内容。在下面的文档中,我添加了新的代码片段:
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
}
由于某些原因,如果键盘是否出现,视图不会根据实际情况调整大小。
发布于 2021-06-16 13:26:06
你能试着做以下工作吗,我想我们现在必须手动添加键盘的填充。
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)
val insets = windowInsets.getInsets(WindowInsets.Type.ime() or WindowInsets.Type.systemGestures())
insets
}
windowInsets
}
发布于 2021-12-31 11:20:45
根据Android API 30的google开发人员,他们已经不推荐它了,并为我们提供了一个解决方案setDecorFitsSystemWindows.。但是这不能在Android 30下工作,对于30岁以下的人来说,你必须使用和以前一样的方法。
它是如何工作的:当setDecorFitsSystemWindows是真时,框架将检查SYSTEM_UI_LAYOUT_FLAGS以及WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE标志,并根据这些标志对内容进行匹配。
但是,当它被设置为False时,框架将不适合insets的content视图,并将检查您的WindowInsets来设置内容视图。
首先,您必须定义可以使用的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时,设置为false
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)
}
}
}
参考链接:
发布于 2022-01-25 01:43:47
最简单的解决方案是向AndroidManifest.xml
添加以下内容。
<activity
android:name=".MyActivity"
android:windowSoftInputMode="adjustResize" />
https://stackoverflow.com/questions/68003131
复制相似问题