有两个版本解决:
1.直接用代码修改输入模式:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE |
WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
或直接:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
2.在AndroidManifest.xml中的activity标签中设置windowSoftInputMode。
上述属性的设置主要做两个事情:
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()来设置上述属性。