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

转载请附上本文地址

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,805评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,305评论 4 61
  • 《一个人的朝圣》,当时看到书名的时候刚看完一本关于放下一切去西藏追寻心灵的故事,以为是同类就收了。 所有我以为的都...
    陈木cml阅读 378评论 0 1
  • 也不知是梦是醒,总之是与你有关!爱上一个人好辛苦,没有条件的我,怎么可能站在你的面前?说好的努力总是不能坚持,真心...
    墨雨卿辰阅读 120评论 0 0
  • es z z zz z zzzzz s ssss s sss s s s s ss s
    Lewis92阅读 337评论 0 0