最近遇到的一个问题是全屏Activity中要求弹出键盘不顶起布局,首先windowSoftInputMode的取值是有多个的,在全屏场景下adjustPan是没有用的,需要使用adjustResize首先确保键盘不顶起布局。
android:windowSoftInputMode="stateHidden|adjustResize"文章来源:https://www.toymoban.com/news/detail-705058.html
但是单纯设置windowSoftInputMode在布局方面又会有新的问题,那就是可能需要在键盘上方展示文本框,但是键盘的高度是不固定的,在全屏场景下布局不被顶起,因此文本框会被键盘遮挡,为解决这个问题,需要在键盘弹起时测量键盘的高度,代码如下文章来源地址https://www.toymoban.com/news/detail-705058.html
//在键盘弹起的地方对文本库增加addOnGlobalLayoutListener,我xml的布局是ConstraintLayout
binding.etDiy.viewTreeObserver
.addOnGlobalLayoutListener {
val rect = Rect()
binding.root.getWindowVisibleDisplayFrame(rect)
val screenHeight = binding.root.height
val keypadHeight = screenHeight - rect.bottom
if (keypadHeight > screenHeight * 0.15) {
if (isSet) return@addOnGlobalLayoutListener
isSet = true
val constraintSet = ConstraintSet()
constraintSet.clone(binding.root)
constraintSet.connect(
binding.viewBackground.id,
ConstraintSet.BOTTOM,
ConstraintSet.PARENT_ID,
ConstraintSet.BOTTOM,
keypadHeight
)
constraintSet.applyTo(binding.root)
} else {
if (!isSet) return@addOnGlobalLayoutListener
isSet = false
val constraintSet = ConstraintSet()
constraintSet.clone(binding.root)
constraintSet.connect(
binding.viewBackground.id,
ConstraintSet.BOTTOM,
ConstraintSet.PARENT_ID,
ConstraintSet.BOTTOM,
0
)
constraintSet.applyTo(binding.root)
}
}
到了这里,关于全屏Activity弹出键盘不顶起布局的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!