在很多时候,很多需求下,我们都需要得知键盘的高度啊!实在不能理解为什么安卓不提供这样方便的API。虽然没有很好的监听事件,但是我们还是可以制造一个的。想想虚拟键盘弹起来之后界面发生了什么变化?对的,有一半的界面被遮挡了,那么我们就可以针对这个不同点制造一个事件监听了。
View mYourView;
int mVisibleHeight;
boolean mIsKeyboardShow;
protected void onCreate(Bundle savedInstanceState) {
...
mYourView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
getKeyboardHeight();
}
});
...
}
private void getKeyboardHeight() {
Rect r = new Rect();
mYourView.getWindowVisibleDisplayFrame(r);
int visibleHeight = r.height();
if (mVisibleHeight == 0) {
mVisibleHeight = visibleHeight;
return;
}
if (mVisibleHeight == visibleHeight) {
return;
}
mVisibleHeight = visibleHeight;
// Magic is here
if (/* compare the visiable height �to others */) {
mIsKeyboardShow = true;
} else {
mIsKeyboardShow = false;
}
}
Have fun
网友评论