奇技淫巧之-Android监听键盘弹出与隐藏事件
相信看到这个标题,大家都会潜意识觉得:Activity中没有可以复写的方法么?或者说,没有什么listener么?
抱歉,真的没有,我们潜意识都是以为系统会提供,其实系统提供的是我们控制键盘的弹出和隐藏,而不是键盘弹出和隐藏触发我们的事件。
我们在开发中经常会遇到软键盘遮挡住了输入框,而直接把输入框往上顶adjustResize这种方法过于暴力影响美观,我们希望键盘弹出时动态的去改变布局。这时候,便用到了监听键盘弹起事件的功能。
正题
好了,进入正题,如何监听键盘的弹出和隐藏呢?
- 目前通用的方法是,由于键盘弹起与隐藏,会使得layout的布局发生变化,通过布局的大小变化触发的事件实现键盘事件的触发(该方法的缺点是,当设置为全屏模式时,由于布局强制充满全屏,此时布局大小不会再改变,该方法也就失效了。至少我这边是这样的 ->_-> )
我们可以复写一个ViewGroup的onSizeChanged方法,然后我们的根布局就是这个AdjustSizeLinearLayout,此时当键盘弹起会触发我们的监听器。
|
|
- 该方法来自于github,
使用简单
|
|
虽然不是根据布局大小变化来判断的,但是根据ViewTreeObserver.OnGlobalLayoutListener,
|
|
还是根据高度变化来间接判断键盘是否弹出的。
总结
Android系统并没有给我们提供监听键盘弹出的方法,我们只能自己监听view的高度变化来间接判断键盘是不是弹出了。同时希望大家有更好的方法提供
谢谢大家阅读,如有帮助,来个喜欢或者关注吧!
本文作者:Anderson/Jerey_Jobs
简书地址:Anderson大码渣
github地址:Jerey_Jobs