Android,获取虚拟键盘的高度

作者: SoloHo | 来源:发表于2015-03-26 16:41 被阅读2590次

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

    转载请附上本文地址

    相关文章

      网友评论

      本文标题:Android,获取虚拟键盘的高度

      本文链接:https://www.haomeiwen.com/subject/vvxnxttx.html