1、现在 Utils 里添加软键盘是否弹出的判断:
fun isSoftShowing(context: Activity):Boolean {
//获取当前屏幕内容的高度
val screenHeight = context.window.decorView.height
//获取View可见区域的bottom
val rect = Rect()
//DecorView即为activity的顶级view
context.window.decorView.getWindowVisibleDisplayFrame(rect)
//考虑到虚拟导航栏的情况(虚拟导航栏情况下:screenHeight = rect.bottom + 虚拟导航栏高度)
//选取screenHeight*2/3进行判断
return screenHeight*2/3 > rect.bottom;
}
2、再 Activity 中监听软键盘的弹出和隐藏:
etEmail.addOnLayoutChangeListener(object :View.OnLayoutChangeListener{
override fun onLayoutChange(v: View?, left: Int, top: Int, right: Int, bottom: Int, oldLeft: Int, oldTop: Int, oldRight: Int, oldBottom: Int) {
if (Utils.isSoftShowing(this@LoginActivity)){
showToast("键盘弹出")
} else{
showToast("键盘隐藏")
}
}
})