原文:http://solo.farbox.com/blog/get-softkeyboard-height
在很多时候,很多需求下,我们都需要得知键盘的高度啊!实在不能理解为什么安卓不提供这样方便的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; } }