软键盘的显示与隐藏

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);
    }

猜你喜欢

转载自blog.csdn.net/qq_33666539/article/details/52327742