该方法用与计算键盘是否弹出,以及未被键盘覆盖的视图高度。
首先在onCreate()中添加监听:
//view被遮挡事件监听
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
getKeyboardHeight();//view改变时调用该方法
}
});
下面是getKeyboardHeight()方法:
/**
* 未被覆盖的屏幕(键盘外的高度)
*/
int mVisibleHeight;
/**
* 键盘是否弹出是否
*/
boolean mIsKeyboardShow;
/**
* 判断键盘弹出
*/
private void getKeyboardHeight() {
Rect r = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
//总的屏幕高度
int hei = metric.heightPixels;
int visibleHeight = r.height();
if (mVisibleHeight == 0) {
mVisibleHeight = visibleHeight;
return;
}
if (mVisibleHeight == visibleHeight) {
return;
}
mVisibleHeight = visibleHeight;
// 键盘出现时(显示界面小于总屏幕2/3时)
if (mVisibleHeight<hei/3*2) {
mIsKeyboardShow = true;
} else {
mIsKeyboardShow = false;
}
}
有疑问欢迎讨论!!!