一些项目中需要隐藏输入法,比如登录页面,登录成功后需要隐藏输入法,还有比如发布某个帖子,或者消息是
发布成功后需要隐藏输入法,再比如一个页面中既有EditText 又有Spinner等控件,当你输入完就去点击
Spinner控件是软键盘是没有被隐藏的,这是是影响用户体验的。
这里我写了一个静态的方法,有需要的可以放在Util包中,需要用的时候直接调用就ok
/**
* 隐藏输入法面板
*
* @param activity
*/
public static void hideInputMethod(Activity activity) {
if (null == activity) {
return;
}
if (null != activity.getCurrentFocus() && null != activity.getCurrentFocus().getWindowToken())
{
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
}
参数是Activity,某个Activity中调用时,直接把这个Activity穿进去就行了,
例如,Util.hideInputMethod(MainActiviity.class);util是通用类名。
还有些情况下也需要隐藏输入法,比如说发布一写信息后,跳转到另一个界面时,在第二个界面居然还能看到输
入法,这样的用户体验太差了
那么问题来了,怎么解决这个问题呢,答案请看下面
在AndroidMainfirst.xml文件中,你注册的那个Activity中加入
android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
windowSoftInputMode这个就是用来控制软件盘的,下面是几个值得含义,可以参考看一下。
各值的含义:
【1】stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置
【2】stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示
【3】stateHidden:用户选择activity时,软键盘总是被隐藏
【4】stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的
【5】stateVisible:软键盘通常是可见的
【6】stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态
【7】adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示
【8】adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间
【9】adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分