Android软键盘(六)如何监听到软件盘显示与隐藏的事件,完美实现登录界面
来源:互联网 发布:js获取disabled属性值 编辑:程序博客网 时间:2024/06/05 19:44
结合文章
1.http://blog.csdn.net/hknock/article/details/18667181
2.Android 显示和隐藏软键盘
activity 添加
- android:windowSoftInputMode="stateHidden|stateUnchanged"
有时候我们需要监听软件盘隐藏事件。但是官方并没有提供相关的监听回调,这时我们就需要通过计算布局来判断软键盘的关闭事件了。思路与上一篇文章Android软键盘(五)如何判断软键盘是否显示相似。
看效果图:
有图有证据,不说了,上代码:
可以看出,关键代码都用了上一篇文章写到的。获取屏幕内容高度,并获取当前内容的可见区域的bottom值,再进行计算,那么addOnLayoutChangeListener是什么呢?是一个监听布局重绘的回调,每当这个view被重绘了,onLayout就被回调了。所以每次键盘的弹出和隐藏必然伴随着布局的重绘,所以这个监听必然会被回调,所以在内部再判断一下监听是否在显示即可。我在上述代码中用了bottom - rect.bottom 这样的判断,bottom值代表重绘完成之后这个view的bottom值。
上面从图中看出有一个小bug,就是第一次进入界面的时候,也会判断键盘的状态.....这个大家自己想办法屏蔽一下吧,我就懒得弄了。
-------------------------------------------------------------------------------------------------------------------
这里来说一下网上比较流行的大神的做法:
上述原文链接http://blog.csdn.net/bear_huangzhen/article/details/45896333
他是用oldBottom - bottom来判断的,但是经过我的测试,这种做法 只有在界面内有ListView或者ScrollView的情况下才管用,如果界面内没有这种控件,那么键盘的弹出与隐藏,onLayout方法中回调的 oldBottom 和bottom值一直是相等的,无论布局是否上移。所以这是个坑,我看到原文链接一大堆人抱怨不管用,又有一些人说管用,所以我在这里阐述一下,我的那种方法,在哪种情况下都管用。 我在第二篇和第四篇中探讨布局上移的问题就讨论过了,界面存在ListView这种控件和不存在这种类似控件的情况是不一样的,所以出现这种情况很正常。据我测试,如果界面不存在ListView这种控件,弹出和隐藏键盘之后,虽然整个布局上移,下移,但是onLayout方法中bottom和oldBottom一直相等,并且一直和未弹出键盘时一样,所以,呵呵╮(╯▽╰)╭
- Android软键盘(六)如何监听到软件盘显示与隐藏的事件,完美实现登录界面
- Android软键盘(六)如何监听到软件盘显示与隐藏的事件
- 如何监听软键盘的显示与隐藏
- 如何监听软键盘的显示与隐藏
- 监听软键盘的显示与隐藏
- Android监听软键盘的显示与隐藏
- Android监听软键盘的显示与隐藏
- Android 监听软键盘的显示与隐藏
- android 监听软键盘的显示与隐藏
- Android 监听软键盘的显示与隐藏
- Android监听软键盘的显示与隐藏
- Android软键盘的隐藏显示监听
- 软键盘显示隐藏事件监听
- 关于android 软键盘显示与隐藏监听
- Android 监听软键盘显示隐藏
- Android如何监听:软键盘显示时:返回键事件
- Android如何监听:软键盘显示时:返回键事件
- 监听系统软键盘的显示与隐藏
- 计算机网络自顶向下——计算机网络与因特网
- ofbiz实战6——预约实验室管理系统所有实体定义
- mysql无法连接服务器数据库(not allowed to connect )
- Js-点击表头进行排序
- 主流家庭影院播放器软件横向评比
- Android软键盘(六)如何监听到软件盘显示与隐藏的事件,完美实现登录界面
- 【转】HTTPS浅析与抓包分析 | 老D博客
- xx
- 机器学习神经网络算法(经典BP算法结合实例推导)原理
- 思维导图之六顶思考帽
- leetcode 12. Integer to Roman
- php变量应该进行初始化
- 常用的ERP系统有哪些?ERP系统有哪些版本?
- @RequestBody, @ResponseBody 注解详解