Android-监听虚拟键盘状态
来源:互联网 发布:淘宝天猫店有保障吗 编辑:程序博客网 时间:2024/05/10 21:34
Android系统本身没有提供监听虚拟键盘的隐藏或显示API,
要实现该功能,我们需要间接来解决,当虚拟键盘显示/隐藏是页面当布局会发生改变,我们可以监听页面的RootView的布局变化来解决该问题:
关键代码如下:
public class TestActivity extends Activity { private ViewTreeObserver.OnGlobalLayoutListener mGlobalLayoutListener; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); //create a listener to listen root view layout's status mGlobalLayoutListener = new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { final Rect r = new Rect(); //r will be populated with the coordinates of your view that area still visible. getWindow().getDecorView().getWindowVisibleDisplayFrame(r); int originDecordViewHeight = getWindow().getDecorView().getHeight(); int visibleDecordViewHeight = r.bottom - r.top;//not include status bar final int heightDiff = originDecordViewHeight - visibleDecordViewHeight; if (heightDiff > 200) { //当heightDiff大于某个阀值(此处测试方便设为200)可以认为是键盘出现 onKeybaordShow(); } else { //键盘消失 onKeybaordHide(); } } }; getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(mGlobalLayoutListener); } @Override protected void onDestroy() { super.onDestroy(); //反注册,避免内存泄漏 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { getWindow().getDecorView().getViewTreeObserver().removeOnGlobalLayoutListener(mGlobalLayoutListener); } mGlobalLayoutListener = null; }}
注意:清单文件中TestActivity 的android:windowSoftInputMode需设置adjustResize,否则键盘显示页面布局不会变化,上述的方法也就失效了
阅读全文
0 0
- Android-监听虚拟键盘状态
- Android监听键盘状态变化
- android开发键盘状态监听
- android 监听键盘弹出收起状态
- android 学习笔记十二 监听键盘状态
- android朋友圈监听键盘状态 点击空白区域隐藏键盘
- 监听键盘状态
- swift 监听键盘状态
- Android 监听虚拟键盘的展现与隐藏
- android监听虚拟键盘隐藏和显示事件
- Android 关于监听键盘状态的一个偏方
- Android 监听手机键盘打开和关闭状态
- Android键盘处理-监听键盘状态并实现QQ拉出式弹出回复框。
- android 键盘按键监听
- android键盘监听方案
- android 键盘按键监听
- android键盘监听
- android监听键盘弹出
- 浅谈Tarjan算法求LCA
- SpringMVC基本配置
- POJ 2517 Cover 笔记
- DS.Lab筆記
- 第四次见习作业
- Android-监听虚拟键盘状态
- 排序算法-----快速排序简单介绍
- D. Okabe and City codeforces 最短路
- 通向架构师的道路(第二十一天)spring(三)之SSH
- 三相异步电动机等效电路及仿真
- C++ 求最短路径问题之Dijkstra算法(一)
- 通向架构师的道路(第二十二天)spring(四)使用struts2
- Android studio多渠道打包之友盟
- 通向架构师的道路(第二十三天)maven与ant的奇妙整合