隐藏软键盘对话框后解雇(Hide soft keyboard after dialog dismis

2019-06-26 12:26发布

我想隐藏软键盘AlertDialog解雇之后,但它仍然是可见的。 这里是我的代码:

alert = new AlertDialog.Builder(MyActivity.this);
imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

alert.setOnDismissListener(new DialogInterface.OnDismissListener() {

    @Override
    public void onDismiss(DialogInterface dialog) {
        imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
    }
});

Answer 1:

清单XML

android:windowSoftInputMode="stateAlwaysHidden"

它会自动隐藏软键盘上的辞退Dialog



Answer 2:

我遇到了同样的问题。 通过做这样的解决它。 它不需要任何参考:

imm.hideSoftInputFromWindow(getWindow().getDecorView()
                .getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);


Answer 3:

关闭一个警告对话框,当我有类似的问题。 这似乎这样的伎俩我。

里面你DialogFragment

public static void closeKB(final View view) 
{
    caller.postDelayed(new Runnable() {
        @Override
        public void run() {
            InputMethodManager imm = (InputMethodManager) view.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }, 1);
}

@Override
public void onDismiss(DialogInterface dialog)
{
    super.onDismiss(dialog);
            View view = getActivity().getCurrentFocus();
    if (view != null)
    {
        closeKB(view);
    }
}


Answer 4:

我用这个方法:

IBinder token = searchTextEntry.getWindowToken();
( ( InputMethodManager ) getSystemService( Context.INPUT_METHOD_SERVICE ) ).hideSoftInputFromWindow( token, 0 );

searchTextEntry是我名字EditText参考。



Answer 5:

protected void hideKeyboard() {
    final Activity activity = getActivity();
    final View view = activity != null ? activity.getCurrentFocus() : null;
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (view != null) {
                InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (imm != null)
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
            }
        }
    }, 1);
}

@Override
public void onDismiss(DialogInterface dialog) {
    super.onDismiss(dialog);
    hideKeyboard();
}


Answer 6:

所有这些建议使用InputMethodManager有点模糊-究竟在何处调用它,
他们不至少对我来说工作。
是的,键盘消失,但随后的应用程序崩溃!?
主要的问题是,键盘隐藏发生在同一时间时,对话框消失。

为了避免它dialog.dismiss()应该被称为view.postDelayed()imm.hideSoftInputFromWindow()和我来说,我设置延迟150。



Answer 7:

这个作品! 这将对话框解雇后关闭键盘

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);


文章来源: Hide soft keyboard after dialog dismiss