软键盘导致界面被顶起
在RelativeLayout布局中放置在顶部的View由于受到软键盘弹起的影响,会被顶到软键盘以上,体验非常不好,这时可以给Activity设置 android:windowSoftInputMode=“adjustPan|stateHidden”,就可以防止底部View被顶起。上面的问题应该是比较普遍的问题,解决方法网上说的也很多。但更多的时候我们遇到的是软键盘遮挡的问题,例如登录界面,网上的解决方案也比较多。
今天记录一个由于软键盘隐藏引起的界面跳动问题,请看gif图:
问题描述:
一个界面根布局为FrameLayout,点击按钮显示在Framelayout中的一个覆盖布局,覆盖布局有一个EditText,此时点击EditText弹起软键盘,然后点击右上的隐藏按钮,隐藏覆盖布局,无论主动或者不主动隐藏软键盘,隐藏覆盖布局后,它后面的布局都会跳动一下,除非首先隐藏软键盘,等软键盘完全隐藏后再隐藏覆盖布局,后面的界面才不会移动。
界面为什么会跳动,肯定是软键盘引起的,然后尝试最常用的方法设置android:windowSoftInputMode=“adjustPan|stateHidden”,隐藏覆盖布局依然会引起界面跳动。
感觉是焦点的变化引起了界面的跳动然后在覆盖布局后面的布局添加一个EditText在覆盖布局隐藏时获取焦点。
gif效果:
界面不跳动了,所以接下来就好解决了,只需要在根布局添加主动获取焦点的代码即可:
android:focusable=“true”
android:focusableInTouchMode="true"