android开发:获取键盘的高度(实测真实有效)

由于最近在做即时通讯,做类似于微信的点击键盘消失,弹出表情页面(表情页面的高度和键盘的高度一致),于是在网上看了好多android测键盘高度的代码,都多多少少有些问题,于是我自己进行重新编写,终于弄了一个比较ok的测量高度的代码。

public class Addfd extends Activity {@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.addfd);final Context context = getApplicationContext();final LinearLayout parentLayout = findViewById(R.id.parent);final View myLayout = getWindow().getDecorView();parentLayout.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {private int statusBarHeight;@Overridepublic void onGlobalLayout() {Rect r = new Rect();  // 使用最外层布局填充,进行测算计算  parentLayout.getWindowVisibleDisplayFrame(r);int screenHeight = myLayout.getRootView().getHeight();int heightDiff = screenHeight - (r.bottom - r.top);if (heightDiff > 100) {  // 如果超过100个像素,它可能是一个键盘。获取状态栏的高度  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 = context.getResources().getDimensionPixelSize(x);} catch (Exception e) {e.printStackTrace();}int realKeyboardHeight = heightDiff - statusBarHeight;Log.e("键盘", "keyboard height(单位像素) = " + realKeyboardHeight);}});}}

这是布局代码

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:id="@+id/parent"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="match_parent"><EditTextandroid:id="@+id/die"android:layout_width="match_parent"android:layout_height="100dp"android:layout_alignParentTop="true"android:inputType="phone" /></RelativeLayout></LinearLayout>

android开发:获取键盘的高度(实测真实有效)相关推荐

  1. iOS获取键盘的高度

    - (void)viewDidLoad { [super viewDidLoad]; //增加监听,当键盘出现或改变时收出消息 [[NSNotificationCenter defaultCenter ...

  2. android 获取加速度传感器值,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  3. android开发中磁场传感器,Android开发获取传感器数据的方法示例【加速度传感器,磁场传感器,光线传感器,方向传感器】...

    本文实例讲述了Android开发获取传感器数据的方法.分享给大家供大家参考,具体如下: package mobile.android.sensor; import java.util.List; im ...

  4. android keyboard,Android 如何获取keyboard的高度

    Android程序中,键盘弹出或者关闭,有的时候我们需要做一些操作,那么我们怎么才能获取键盘高度呢?目前没找到直接获取的方法,可以采取动态计算的形式: // 在一个class里面定义以下变量: pri ...

  5. android开发根据分辨率设置高度,最详细的Android屏幕适配方案分析

    为什么要屏幕适配 Android开发过程中我们常用的尺寸单位有px.dp,还有一种sp一般是用于字体的大小.但是因为px是像素单位,比方我们通常说的手机分辨例如1920*1080都是px的单位.现在A ...

  6. android开发获取应用本身耗电量_别找了,Android常用自动化工具全在这儿了!

    Android常用自动化工具 ADB - 是Google提供的为Android编写UI测试用例的自动化工具, Android开发/测试人员不可替代的强大工具 uiautomator - 是Google ...

  7. Android开发获取当前经纬度和详细位置信息(原生代码实现)简单案例

    文章目录 Android定位(经纬度+当前位置信息) 申请权限 LocationManage位置管理器 完整代码 Android定位(经纬度+当前位置信息) 我相信大家在Android开发中应该都有遇 ...

  8. android开发获取imei码,Android中获取IMEI码的方法

    我们在开发项目的时候,通常要获取手机的IMEI码,这是开发的必备需求,接下来,爱站技术频道小编就告诉大家Android中获取IMEI码的方法,希望本文的介绍能提高大家的水平. 核心代码:Imei = ...

  9. android开发获取手机屏幕分辨率

    android开发基础过程中获取手机屏幕分辨率用来加载不同的UI,图片等,如何获取手机屏幕分辨率? DisplayMetrics displayMetrics=new DisplayMetrics() ...

最新文章

  1. XML和JSON数据格式对比
  2. 一次被僵尸网络病毒攻击的过程
  3. jsp网站访问次数统计
  4. 【Android UI】图片 + 文字展示by SpannableStringBuilder
  5. python画图代码彩虹-用python画一颗彩虹色爱心送给女朋友!!!
  6. 安装python有什么用_什么是Python Wheels?为什么要关心它?,python有什么用
  7. 从零开始写javaweb框架 pdf_大学写的一个 Java Web 框架
  8. WPF 不遮挡任务栏最大化和全屏显示
  9. 第五百一十八天 how can I 坚持
  10. 1.1.0-简介-P5-时间、时钟和事件顺序
  11. Internet控制报文协议ICMP
  12. Flink DataStream 关联维表实战
  13. MTK刷机常见错误分析
  14. 模拟器搭建之二:如何搭建 MTK 6589模拟器
  15. kali Linux外网渗透控制Android安卓手机系统。
  16. Redis集群的节点通信原理
  17. php读取本地txt,php读取本地文件常用函数(fopen与file_get_contents)_PHP教程
  18. [Jenkins]如何自动停止超时任务?
  19. 刚闪电入门了树莓派:斩获不止Python,Linux,goLang,还有架构,格局...
  20. [易飞]如何实现同单据两种不同凭证设计方式?(只打印单头单尾金额,多页最后一页面显示金额)

热门文章

  1. 月光宝盒之时间魔法--java时间的前生今世
  2. InstallShield帮助文档(译一)
  3. DELL戴尔 800电话
  4. Vue中的style标签的lang=“ “和scpoed属性
  5. 倍福--通过第三方的EDS文件配置EIP从站的信号
  6. Python之psutil库的使用
  7. linux卸载virbox,Ubuntu16.04下安装virtualbox,配置及卸载
  8. 系统学习Python——模块和包:Python程序架构
  9. 重载函数的特性-总结
  10. 我的第一个翻译作品 - Acrobat core API中的两章