XPopup
XPopup copied to clipboard
物理返回键导致软键盘和弹框一起消失问题
XPopup版本 2.9.19
手机系统和型号 xiaomi redmi note8 android 11
描述你的问题 想要物理返回键点击时,如果有软键盘优先隐藏输入法;再次点击才隐藏dialog;
目前现状: 我这继承FullScreenPopupView后,点击物理返回键,会直接导致软键盘和弹框一起消失; 我们重写processKeyEvent也无发在正确处理,因为 键盘的 ViewTreeObserver.OnGlobalLayoutListener监听触发时间比processKeyEven先执行,在processKeyEven触发时软键盘已经消失,导致processKeyEven内无法判断当前软键盘是否开启;
请教下应该如何解决?
作者其实已经做了处理,在processKeyEvent里进行了判断,如果当前键盘高度大于0就隐藏键盘,如果小于等于0则关闭弹窗。但是有bug,返回键点击后键盘高度为0后,才会在processKeyEvent进行判断,所以是无效的。
private var mKeyboardHeight=0
//高度变化回调
override fun onKeyboardHeightChange(height: Int) {
super.onKeyboardHeightChange(height)
//延迟设置数值 将onBackPressed方法放置到前面执行
btnSend.postDelayed({
mKeyboardHeight=height
},300)
}
override fun onBackPressed(): Boolean {
if (mKeyboardHeight>0){
KeyboardUtils.hideSoftInput(activity)
return true
}
return super.onBackPressed()
}