初始化

 View mRootView; int rootViewVisibleHeight;//纪录根视图的显示高度

通过监听监听根布局高度变化来判断键盘弹出和收起

 mRootView = getWindow().getDecorView();        //监听视图树中全局布局发生改变或者视图树中的某个视图的可视状态发生改变        mRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {            @Override            public void onGlobalLayout() {                //获取当前根视图在屏幕上显示的大小                Rect r = new Rect();                mRootView.getWindowVisibleDisplayFrame(r);                int visibleHeight = r.height();                System.out.println(""+visibleHeight);                if (rootViewVisibleHeight == 0) {                    rootViewVisibleHeight = visibleHeight;                    return;                }                //根视图显示高度没有变化,可以看作软键盘显示/隐藏状态没有改变                if (rootViewVisibleHeight == visibleHeight) {                    return;                }                //根视图显示高度变小超过200,可以看作软键盘显示了                if (rootViewVisibleHeight - visibleHeight > 200) {                    rootViewVisibleHeight = visibleHeight;                    return;                }                //根视图显示高度变大超过200,可以看作软键盘隐藏了                if (visibleHeight - rootViewVisibleHeight > 200) {                    rootViewVisibleHeight = visibleHeight;                      return;                }

更多相关文章

  1. Android实现随机圆形云标签效果
  2. Android开发之自动换行LinearLayout
  3. Android中用BaseAdapter实现带Button和显示网络图片的Listview
  4. 成功开发Android(安卓)app-5(视图)
  5. Android(安卓)常用基本控件 ImageButton
  6. Android经常使用UI组件 - TextView
  7. Android(安卓)Activity之Window的创建过程
  8. android多图拼接长图并合理显示
  9. Android(安卓)中Webview 自适应屏幕

随机推荐

  1. 练习2-4 温度转换 (5分)
  2. 15:VMware Horizon View 8.0-配置RDS服务器
  3. MySQL5.6 myisam表修复
  4. Linux内核文件详解
  5. 17:VMware Horizon View 8.0-创建应用程序
  6. 16:VMware Horizon View 8.0-创建配置RDS桌
  7. PHP的Excel导出与导入
  8. 后台五 角色管理
  9. 前端用Ajax实现数据异步加载,无刷新分页(核
  10. C语言循环分支结构深度总结实践