- AndroidMainfest中对Activity进行的相关设置
android:windowSoftInputMode="stateUnchanged|adjustPan"
stateUnchanged:软键盘的控制状态
stateUnspecified:(默认采取的状态)未指定的状态,系统将选择适当的中泰或依赖theme中的设置
stateUnchanged:保持原先的状态,无论是显示还是隐藏,例如进入新的activity时,保持在原来avtivity的状态
stateHidden:当用户主动进入该界面时隐藏键盘
stateAlwaysHidden:永远隐藏
stateVisible:正常情况下显示键盘
stateAlwaysShow:当用户主动进入该界面时显示键盘
adjustPan:活动主窗口的调整
adjustUnspecified:(默认采取的状态)系统将任意选取一些的选项,所选择的模式取决于视图中是否含有可以滚动的控件,如果有则视图会调整大小,让整个布局处于可见状态,不被遮盖()
adjustResize:视图将调整大小为输入法提供空间,即整个视图将会显示
adjustPan:输入法会遮盖视图,但是输入的位置不会被遮盖
- 输入法的显示与隐藏
显示:
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.showSoftInput(mEditText, InputMethodManager.SHOW_FORCED);
showSoftInput 第二个参数:
InputMethodManager.SHOW_FORCED
强制显示:此方法调出输入法后只能强制手动关闭或者在hideSoftInputFromWindow时第二个参数设置为“0”
InputMethodManager.SHOW_IMPLICIT
隐士显示:这种情况下输入法可能不会显示出来
隐藏
InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getApplicationWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
hideSoftInputFromWindow的第二个参数:
HIDE_IMPLICIT_ONLY:
只用当键盘显示的方式为隐士调出的才生效(如采用SHOW_FORCED或者用户点击输入框显示的键盘调用此方法不生效)
HIDE_NOT_ALWAYS:
键盘一般会被隐藏除非被强制调出或者为原生(此时可以采用强制隐藏,即把第二个参数设为“0”)
- 监听输入法显示和隐藏的方式参考:
http://winuxxan.blog.51cto.com/2779763/522810