android开发:获取键盘的高度(实测真实有效)
来源:互联网 发布:c语言实战105例 pdf 编辑:程序博客网 时间:2024/05/17 05:08
由于最近在做即时通讯,做类似于微信的点击键盘消失,弹出表情页面(表情页面的高度和键盘的高度一致),于是在网上看了好多android测键盘高度的代码,都多多少少有些问题,于是我自己进行重新编写,终于弄了一个比较ok的测量高度的代码。
//一个静态变量存储高度public static int keyboardHeight = 0; boolean isVisiableForLast = false; ViewTreeObserver.OnGlobalLayoutListener onGlobalLayoutListener = null; public void addOnSoftKeyBoardVisibleListener() { getKeyboradHeight(); if(keyboardHeight>0){ return; } final View decorView = getWindow().getDecorView(); onGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); decorView.getWindowVisibleDisplayFrame(rect); //计算出可见屏幕的高度 int displayHight = rect.bottom - rect.top; //获得屏幕整体的高度 int hight = decorView.getHeight(); boolean visible = (double) displayHight / hight < 0.8; int statusBarHeight = 0; try { Class<?> c = Class.forName("com.android.internal.R$dimen"); Object obj = c.newInstance(); Field field = c.getField("status_bar_height"); int x = Integer.parseInt(field.get(obj).toString()); statusBarHeight = getContext().getResources().getDimensionPixelSize(x); } catch (Exception e) { e.printStackTrace(); } if(visible&&visible!= isVisiableForLast){ //获得键盘高度 keyboardHeight = hight - displayHight-statusBarHeight; Logger.sl(Log.DEBUG,"MMSL",keyboardHeight); } isVisiableForLast = visible; } }; decorView.getViewTreeObserver().addOnGlobalLayoutListener(onGlobalLayoutListener); }
0 0
- android开发:获取键盘的高度(实测真实有效)
- Android系统获取键盘的高度。
- Android, 获取虚拟键盘的高度
- 获取键盘的高度
- 获取键盘的高度
- 获取Android控件的真实宽高,亲测有效
- Android开发之有效获取状态栏(StatusBar)高度
- Android开发之有效获取状态栏(StatusBar)高度
- android-获取虚拟键盘的高度(让虚拟键盘顶部和弹出框底部贴着)
- Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
- Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
- Android如何判断NavigationBar是否显示(获取屏幕真实的高度)
- 安卓获取屏幕真实高度(除去虚拟键盘)
- Android中获取状态栏高度的有效方法
- 获取iphone键盘的高度
- 获取键盘高度的实现
- iOS获取键盘的高度
- iOS获取键盘的高度
- GCC
- 解压版mysql的下载和配置
- jquery创建水平居中垂直居中弹出框
- 全排列
- Linux下应用tgtadm构建iSCSI Target(SAN)
- android开发:获取键盘的高度(实测真实有效)
- CSS box-shadow
- 使用Coding.net来搭建基于Hexo的博客
- AP微积分拒绝无穷小,为我们留下了赶超的机会
- 安卓ADB端口被占用/ADB无法使用解决办法
- RxJava和Retrofit的介绍
- Introduction – Android TV application hands on Tutorial 1
- Codeforces 635C XOR Equation【数学姿势】
- C++数组