android软键盘盖住输入框的解决方式
当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入。
解决办法:
方法一:在你的activity中的oncreate中setContentView之前写上这个代码getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);(测试失败)/getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE|WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
方法二:在项目的AndroidManifest.xml文件中界面对应的<activity>里加入android:windowSoftInputMode="stateVisible|adjustResize",这样会让屏幕整体上移。如果加上的是
android:windowSoftInputMode="adjustPan"这样键盘就会覆盖屏幕。
方法三:把顶级的layout替换成ScrollView,或者说在顶级的Layout上面再加一层ScrollView的封装。这样就会把软键盘和输入框一起滚动了,软键盘会一直处于底部。
注:方法一和二应该是同一种方法,不过一个是在代码里实现一个是在xml文件里实现。可能会应为1.5和之前的版本不支持该方法。但是方法三是肯定没有问题的。
软键盘状态可以设置的值有:
1.stateUnspecified
不显式指定软键盘的状态(隐藏或显示),状态将依赖于主题的设置或者将由系统将选择一个合适的状态;是软键盘状态的默认设置;
2.stateUnchanged
Activity获得焦点(windowsFocus?)时,软键盘保持前面的状态,无论是隐藏还是显示;
3.stateHidden
正常情况下,Activity获得焦点时,软键盘是隐藏状态(直到用户自己touch文本框);--窗口打开时就会默认显示软键盘
4.stateAlwaysHidden
当该主窗口获得焦点时,软键盘总是被隐藏;
5.stateVisible
正常情况下,Activity获得焦点时,软键盘是显示状态(如果该窗口需要的话(即有EditText,或有Editable的控件));
6.stateAlwaysVisible
该主窗体获得焦点时,软键盘总是显示状态;
窗口状态可以设置的值有:
1.adjustUnspecified
默认设置,不指定主窗口是否调整以适合软键盘输入,由系统决定干什么;
2.adjustResize
调整主窗口,也就是挤压窗口界面,将窗口调整到软键盘之上;
3.adjustPan
不调整窗口,显示到状态上就是软键盘会覆盖主窗口的下半部分;
注:上述两种值的设置用“|”隔开
对于非Activity的窗口,可以通过setSofeInputMode()来设置上述属性