效果:
今天来了个需求EditText和Keyboard保持一定的距离,让用户操作友好一些.
本着不懂就问的心态翻了一圈百度,说的最多的是EditText加个底部距离然后软键盘弹出就会距离EditText更远了.但是这个方案达不到我的需求因为APP太多EditText内容了,如果一个一个的修改,我是不能接受的.
然后把问题抛给了群友,热心的群友给了解答
思路如下:将Activity的R.id.content的布局做一个上移的动画效果 用来达到EditText和Keybooard软键盘保持距离的操作
先说一下我为什么采用这种方案:因为项目的架构统一处理了Activity的生命周期,所以我只要在统一处理生命周期的地方加入代码去改变一下整体布局的上移就可以达到效果,满足了我特别不想改一堆控件的诉求,节省了时间
然后借鉴了XPopup的KeyboardUtils处理方法经验 ,贴一下库,帮人推广,饮水思源li-xiaojun/XPopupgithub.com
最后贴一下我的代码
这里要说明下 moveUpToKeyboard()方法里面是按照自己需求更改的,在这个项目里面因为我的Activity都是加了 android:windowSoftInputMode="adjustPan" 标识的,所以键盘默认是会上移到EditText的文字下面的,所以我这边处理就是设置一个阈值,阈值代表的是键盘到EditText的距离.比如我这边的KE_VALUE
然后根据设置的值 做相应的判断
1.如果EditText不会遮挡则不执行动画
2.如果遮挡发生则adjust会上移一部分,那我们就按照KE_VALUE来上移
3.如果处于(0,KE_VALUE)区间则上移剩下的一部分距离即可
最后还判断了下EditText如果特别高,上移导致光标出屏幕的现象,这里需要保证EditText的top在navagation之下,代码仅供参考,还有很多地方值得优化大体思路是这样的:
public