您的位置:首页 > 移动开发 > Android开发

android虚拟键盘挡住了输入框处理办法!

2014-11-17 00:00 288 查看
摘要: 自己在做项目时遇到这问题,在网上找了许多处理办法,自己整理了一下,希望能帮到大家

问题说明:在Android的开发中,有时候会遇到软键盘弹出时挡住输入框的情况。

解决办法:设置下软键盘的模式就可以了。

方法一:直接用代码修改输入模式:
在你的activity中的oncreate中setContentView之前写上这个代码
1
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
2
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
或直接:
1
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
方法二:在AndroidManifest.xml中的activity标签中设置windowSoftInputMode。
在项目的AndroidManifest.xml文件中界面对应的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",这样会让屏幕整体上移。
经过测试,有的手机这样也不行,需要改动一下属性即可,如android:windowSoftInputMode="stateVisible|adjustUnspecified"

方法三:把顶级的layout替换成ScrollView,或者说在顶级的Layout上面再加一层ScrollView的封装。
这样就会把软键盘和输入框一起滚动了,软键盘会一直处于底部。

方法一和方法二的属性的设置主要做两个事情:
1.软键盘状态,隐藏/显示;
2.窗口是否调整;

下面科普一下各个属性的含义:
一、关于软键盘状态可以设置的值有:
1.stateUnspecified
不指定软键盘的状态(是否它是隐藏或显示),系统将选择一个合适的状态或依赖于主题的设置;软件盘状态的默认设置;
2.stateUnchanged
Activity获得焦点时,软件盘保持前面的状态,无论是隐藏还是显示;
3.stateHidden
正常情况下,Activity获得焦点时,软键盘是隐藏状态;
4.stateAlwaysHidden
当该主窗口获得焦点时,软键盘总是被隐藏;
5.stateVisible
正常情况下,Activity获得焦点时,软件盘是显示状态;
6.stateAlwaysVisible
该主窗口获得焦点时,软键盘总是显示状态。

二、关于窗口状态可以设置的值有:
1.adjustUnspecified
默认设置,不指定主窗口是否调整以适合软键盘输入,由系统决定干什么;
2.adjustResize
调整主窗口,也就是挤压窗口界面,将窗口调整到软件盘之上;
3.adjustPan
不调整窗口,显示到状态上就是软键盘会覆盖主窗口的下半部分;
:上述两种值的设置用“|”隔开!
对于非Activity的窗口,可以通过setSoftInputMode()来设置上述属性。
如,在PopupWindows里面需加上下面两句
1
popup.setInputMethodMode(PopupWindow.INPUT_METHOD_NEEDED);
2
popup.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息