项目中用到监听软键盘的显示与隐藏,搜索无果,官方并没有提供软键盘的显示与隐藏的监听。
通过曲线救国,通过监听布局的大小改变来实现。
整体布局大小改变的监听
在Activity生命周期函数onResume中添加整体布局的改变的监听
//屏幕的高度,单位像素
private int screenHeight;
//整体布局的改变量
private int keyHeight;
@Override
protected void onResume() {
super.onResume();
//获取当前屏幕内容的高度
DisplayMetrics dm = getResources().getDisplayMetrics();
screenHeight = dm.heightPixels;
//阀值设置为屏幕高度的1/3
keyHeight = screenHeight * 2 / 3;
getWindow().getDecorView().addOnLayoutChangeListener((v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> {
Rect rect = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(rect);
if (bottom != 0 && oldBottom != 0 && rect.bottom <= keyHeight) {
softInputShow();
} else if (bottom != 0 && oldBottom != 0) {
softInputHide();
}
});
}
public abstract void softInputHide();
public abstract void softInputShow();
网友评论