android 输入法显示和隐藏监听
来源:互联网 发布:python exit return 编辑:程序博客网 时间:2024/06/07 16:42
一、应用场景
在Android程序开发中,edit获取焦点是,输入法可以将布局自动顶上去。有一些特别点的需求,正常布局和顶上去的布局会有少许改变,这个时候就需要监听输入法的状态。
二、产生的问题
在Android系统中并没有提供对输入法状态的监听。需要程序自己去识别输入法是否显示和隐藏。
三、解决思路
3.1、监听EditText 在屏幕的纵坐标Y
3.2、如果是Y变小了,说明输入法的软键盘将EditText网上顶了。
3.3、如果是Y变大了,说明输入法的软键盘隐藏。
3.3、如果Y不变,软键盘的状态没有改变。
四、实现代码
4.1、实现OnGlobalLayoutListener接口
public class SoftInputChangeListener implements ViewTreeObserver.OnGlobalLayoutListener {
4.2、覆写onGlobalLayout()方法
@Overridepublic void onGlobalLayout() { positionY = getPositionY(); if(positionY<=0) return; startMonitor();}
4.3、监听monitorView在屏幕上的纵坐标
private void startMonitor(){ monitorView.postDelayed(new Runnable() { @Override public void run() { int tempY = getPositionY(); if (tempY == positionY) { postCount++; if (MAX_POST_COUNT == postCount) { resetMonitor(); return; } startMonitor(); } else if (tempY < positionY) { //软键盘弹出 resetMonitor(); if(mKeyBoardListen != null) mKeyBoardListen.onKeyboardChange(true); } else { //软键盘隐藏 resetMonitor(); if(mKeyBoardListen != null) mKeyBoardListen.onKeyboardChange(false); } } },50);}
4.4、监听有三种情况4.4.1、纵坐标变小
软键盘弹出。
4.4.2、纵坐标变大
软键盘隐藏
4.4.3、纵坐标不变
软键盘状态不变,也有可能onLayout的时间花费太长,没有纵坐标的位置变化,所以重复延时监听3次,3次都没有变化。避免onLayout没有监听到位置变化。
阅读全文
2 0
- android 输入法显示和隐藏监听
- android 输入法显示和隐藏监听
- Android 真正能监听输入法的显示和隐藏
- Android 监听输入法隐藏与显示状态切换
- Android 监听输入法隐藏与显示状态切换
- Android监听系统输入法键盘弹出显示与隐藏事件
- Android 输入法键盘的隐藏和显示
- Android输入法的显示和隐藏
- 输入法显示和隐藏
- Android监听键盘的显示和隐藏
- Android监听键盘显示和隐藏
- Android监听键盘显示和隐藏
- android 隐藏输入法 显示光标
- android 输入法设置显示隐藏
- 隐藏和显示系统输入法
- android如何调用显示和隐藏系统默认的输入法
- android学习笔记1:输入法的显示和隐藏
- android如何调用显示和隐藏系统默认的输入法
- 测试开发工程师必备——软件工程理论
- 图片的三级缓存
- ECharts中国地图篇-名称经纬度调整
- (并查集)A Bug's Life -- HDOJ
- opengl平行光光源,点光源,聚光灯光源同台出现
- android 输入法显示和隐藏监听
- setOnItemClickListener给ListView设置监听没反应
- LOj #6164. 「美团 CodeM 初赛 Round A」数列互质 (莫队算法)
- Android 7.0 ActivityManagerService(4) 启动Activity的过程:三
- 视频上线系列之Jmeter
- swoole深入学习 7. WebSocket
- C#中得到网卡号
- 用NodeJS开发云计算时代Web服务的真正技术难点
- xlist