Android,获取虚拟键盘的高度

在很多时候,很多需求下,我们都需要得知键盘的高度啊!实在不能理解为什么安卓不提供这样方便的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

转载请附上本文地址

    原文作者:SoloHo
    原文地址: https://www.jianshu.com/p/5dc1a31c26ba
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞