android获得键盘高度,Android获取软键盘高度
在 Android 里我们是无法直接获取软键盘高度的,但是在某些场景下,我们又需要获取软键盘的高度。我们可以使用 ViewTreeObserver.OnGlobalLayoutListener来监听窗口大小的变化,当软键盘弹出时,窗口高度会变小,使用原始窗口高度减去当前窗口高度,就可以得出软键盘的高度了。
//记录原始窗口高度
private int mWindowHeight = 0;
private ViewTreeObserver.OnGlobalLayoutListener mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect r = new Rect();
//获取当前窗口实际的可见区域
getWindow().getDecorView().getWindowVisibleDisplayFrame(r);
int height = r.height();
if (mWindowHeight == 0) {
//一般情况下,这是原始的窗口高度
mWindowHeight = height;
} else {
if (mWindowHeight != height) {
//两次窗口高度相减,就是软键盘高度
int softKeyboardHeight = mWindowHeight - height;
System.out.println("SoftKeyboard height = " + softKeyboardHeight);
}
}
}
};
一般我们在 Activity 的 onCreate()方法中开始监听:
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//......
getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener);
}
请注意当 Activity 被销毁的时候,一定要移除监听,否则就会产生内存泄漏:
@Override
protected void onDestroy() {
super.onDestroy();
getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(mGlobalLayoutListener);
}
通过以上方法可以实时监听软键盘的高度变化,特别是像有些输入法例如搜狗,可以随时切换拼音输入、手写输入,这个时候软键盘的高度都会发生变化。
除此之外,还可以通过该方法判断软键盘是否弹出。
android获得键盘高度,Android获取软键盘高度相关推荐
- h5如何动态获取键盘高度_js获取软键盘高度
没有相关的事件来获取隐藏按钮点击,keydown/keyup事件中获取到的keyCode都是0,楚了你说的前往keyCode 13. 可以用计时器监视window.innerHeight高度改变来判断 ...
- Android中获取软键盘状态和软键盘高度
应用场景 在Android应用中有时会需要获取软键盘的状态(即软键盘是显示还是隐藏)和软键盘的高度.这里列举了一些可能的应用场景. 场景一 当软键盘显示时,按下返回键应当是收起软键盘,而不是回退到上一 ...
- android 键盘遮盖输入框_Android软键盘挡住输入框的终极解决方案
前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 最基本的情况,如图所示:在页面底部有一 ...
- Android获取软键盘的高度、键盘的打开与关闭、监听键盘处于打开还是关闭状态
最近在项目中,需要获取到软键盘的高度,再将底部的布局上移键盘的高度,话不多说,直接上代码: 获取软键盘高度 //一个静态变量存储高度public static int keyboardHeight = ...
- Android 获取软键盘的删除delete事件
对于软键盘删除事件,网上有很多方案是如下,但是 google api也说明了,这个只是监听硬件键盘,对于软键盘并不负责触发(我测试了一下,软键盘能够监听delete键,其他键像数字字母等没有触发这里的 ...
- Android爬坑之旅:软键盘挡住输入框问题的终极解决方式
本文由BarryZhang原创,同一时候首发于diycode.cc.barryzhang.com .github.com/barryhappy.非商业转载请注明作者和原文链接. 前言 开发做得久了.总 ...
- Android爬坑之旅:软键盘挡住输入框问题的终极解决方案
前言 开发做得久了,总免不了会遇到各种坑. 而在Android开发的路上,『软键盘挡住了输入框』这个坑,可谓是一个旷日持久的巨坑--来来来,我们慢慢看. 入门篇 Base 最基本的情况,如图所示:在页 ...
- android 调出键盘表情_android 表情,软键盘冲突解决方案(仿微博等SNS应用)
之前总想搞一下这个模块,可是由于忙碌总是推迟,现在就把这块好好的弥补过来,下面是我实现的思路.本人才疏学浅,还望大家不要见笑. 首先我们还是先看写示例: 上面应用应该不用我过多介绍,下面我简单介绍下我 ...
- android隐藏软键盘方法,Android使用InputMethodManager显示和隐藏软键盘
Android主要用InputMethodManager来对软键盘进行管理.手动显示或隐藏软键盘前需要先获取InputMethodManager. InputMethodManager imm = ( ...
最新文章
- 当老板说要把公司当家时,他在说...
- 一站式学习Redis 从入门到高可用分布式实践(慕课)第十章 缓存设计与优化
- c++内存管理优化之ptmalloc,tcmalloc,jemalloc使用实例
- MySQL----示例知识点整理
- 为什么谷歌要执行严格的代码编写规范
- 代码段:js表单提交检测
- Android UI学习之SeekBar
- 添加内核驱动模块(3)(mydriver.c+ Konfig+Makefile )
- 机器人 迷宫算法_机器人,迷宫和附属建筑
- 腾讯云即时通信IM知识详解
- Bug解决-RuntimeError: Sizes of tensors must match except in dimension 2. Got 320 and 160 (The offendin
- matlab里的pid参数调节,基于MATLAB的PID控制系统参数调节
- containers详解
- 超低延迟直播~毫秒级直播观看体验(实测效果)
- 使用docsify+markdown+vditor构建gitlab pages文档库
- Android直播头像动画,iOS 仿抖音直播头像缩放动画
- Linux查看网络即时网速
- ARIMA时序模型预测股价波动情况
- Java基础看这篇就足够用了(基础知识汇总)
- 【2014年计划】- 文理兼修+中西合璧
热门文章
- Ubuntu命令笔记
- 【职场进阶】入职没有几天就离职是什么心态?
- 带你彻底搞懂MyBatis的底层实现之缓存模块(Cache)-吊打面试官必备技能
- 在html中表单对象以什么标记开始,HTML学习笔记——表单
- 快速get进程、线程基础知识
- mysql 1443_MySQL 1443:這是什么意思?
- DeepMind再爆性骚扰丑闻!内部邮件泄露,色狼自夸猛男
- JCL,JES运作流程
- Note For Linux By Jes(4)-文件的压缩与打包
- 网龙入股大数据智能教育平台 -- “爱多分”