版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/soha_dong/article/details/88966140
在安卓开发中我们再EditText输入的时候总会遇到被软键盘遮挡,下面提供几点解决方法:
1.修改AndroidManifest.xml文件
<activity android:name=".XXXActivity"
//显示软键盘,并让布局压缩
android:windowSoftInputMode="stateVisible|adjustResize"
android:screenOrientation="portrait"/>
- stateUnspecified:界面没有设置"android:windowSoftInputMode"时的状态.这个状态是弹出有EditText的界面时时不弹出软键盘的,当EditText获取焦点的时候弹出软件盘
- stateUnchanged:状态不改变,意思就是和上一个界面相同,上一个界面弹出软键盘,跳转到这个界面时,软键盘也是弹出状态.
- stateHidden:隐藏键盘,弹出这个界面的时候,不管上个界面是什么状态,这个界面的软键盘都是隐藏的.
- stateAlwaysHidden:一直隐藏(跟上面的区别未知,试不出来).
- stateVisible:强制弹出软键盘.跳转到界面后,没有EditText也弹出键盘.
- stateAlwaysVisible:一直显示键盘(同上).
2.在activity的onCreate()方法中设置
//设置软键盘不被遮挡
Window win = getWindow();
win.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
3.在布局文件使用ScrollView包裹布局
4.如果设置了沉浸式状态栏,还需要在布局文件的根节点加入
android:fitsSystemWindows="true"
可以按以上方法进行操作,
只要弹出软键盘会影响到布局的情况,都用ScrollView把布局包裹起来,被包裹的内容就是可能被缩放或挤出屏幕外的内容.然后根据EditText的位置判断用adjustResize还是用adjustPan.
adjustResize是收缩adjustPan是向上挤
个人推荐,登录注册用adjustResize,聊天窗口用adjustPan