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

问题说明:在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);

 


你可能感兴趣的:(android,输入框,虚拟键盘)