EditText有时候会在Activity的布局上,有时候会在非activity的布局上,所以如果写法不对的话,想隐藏软键盘很有可能实现不了,下面是正确的写法,可以将其写入工具类
//显示软键盘
public static void showKeyBoard(EditText v) {
if(v == null) return;
v.requestFocus();
InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(0, InputMethodManager.SHOW_FORCED);
}
//隐藏软键盘有两种写法,根据实际情况选择
//1 直接传入EditText,适用于非Activity的情况
public static void closeKeyBoard(View v) {
if(v == null) return;
v.clearFocus();
InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
//2 传入当前Activity,适用于Activity的情况
public static void closeKeyBoard(Activity act) {
if(act == null || act.getCurrentFocus() == null) return;
InputMethodManager imm = (InputMethodManager) act.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(act.getCurrentFocus().getWindowToken(), 0);
}