要达到效果:当软键盘收起,隐藏EditTex控件。
要求页面不能锁定软键盘适配模式为 adjustPan,否则此方案无效
步骤:
1、给外层ViewGoup添加 OnLayoutChangeListener 监听,这个监听会在软键盘展开/收起时触发。
但仅仅这一步并不够,会发现触发总是又一次调用延迟
2、给Activity设置 android:windowSoftInputMode="adjustResize"
这一步使页面在软键盘弹出时缩小高度,而不是默认的被顶上去。当这一行写上时,就可以在 OnLayoutChangeListener 中根据 oldBottom 与 bottom 进行伸缩判断了
我的代码(Kotlin):
rootView.addOnLayoutChangeListener { v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom ->
if (oldBottom == 0 || bottom == 0) return@addOnLayoutChangeListener
if (oldBottom - bottom > 300) {
//开了软键盘
} else if (bottom - oldBottom > 300) {
//关了软键盘
}
}