android 自定义View于软键盘之上

一般情况,我们在视图上如果放置了输入框控件,当我们点击之后,便会弹出软键盘让我们进行输入的操作。今天我跟大家分享的是,通过一个点击事件,显示出了软键盘,并在软键盘的上方显示我们自定义的一个View.这功能在一些点击评论的地方便可以应用得上了。
效果如图所示

当我们软键盘弹出之后,计算软键盘的高度,(在谷歌提供的API中,我们只能调用软键盘的显示与隐藏的方法,并没有提供软键盘的高度计算,因为这个是软键的输入是属于第三方的,android只是提供一个dialog来给软键盘,所以并就没有提供计算高度的方法)。不过,这也不打紧,因为我们有成千上万的android 开发者,这个并不算是个难题 。我的解决方法也是通过看网上一些大神说的方法,再自己做出来的。

首先,我们在Activity的最外面的Layout设置设置成我们自定义的一个带有OnSizeChangedListener (自已定义的接口) 接口的Layout, 这个接口的作用是用于,我们在代码中设置该Layout的大小变化回调(当键盘弹起之后,会对Layout的布局进行挤压,而此时我们定义的接口回调方法中计算键盘的高度了)。

在做个这效果Demo时,我顺便将点击软键盘区域之外隐藏软键盘的功能也实现了。不过,在做这个的时候,考虑到如果软键盘区域之外的视图有多处点击事件,那我们难道要在每一个点击事件都去处理软键盘隐藏的操作,这多少有点不大合理了,并且,当前的效果应该只是点击软键盘区域之外隐藏软键盘就行,不应该还去处理点击到控件的处理事件。此时,这个方式就有大问题了。最后,我是在 dispatchTouchEvent(MotionEvent ev) 这个方法处理这个问题的,需要计算输入框的位置,来过滤掉一些点击,具体代码可以见我上传的Demo。
http://download.csdn.net/detail/u013318697/9406965

猜你喜欢

转载自blog.csdn.net/u013318697/article/details/50530269