10

我正在DialogActivity. 当对话框打开时,我打电话

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

问题是,当我通过点击取消按钮或在对话框外部单击来关闭对话框时,键盘会切换到文本键盘并且不会消失,直到我单击硬件后退按钮。关闭对话框并将焦点返回到上一个窗口时,如何关闭键盘?

4

5 回答 5

10

AndroidManifest.xml中,在显示Dialog的Activity中设置此属性

android:windowSoftInputMode="stateAlwaysHidden"

笔记!不是stateHiddent,是stateAlwaysHidden。它会在 Dismiss of Dialog 时自动隐藏软键盘。

希望能救你一命。

于 2016-09-19T16:54:06.897 回答
1

我想这种活动方法可能对你有用。

    @Override
    public void onWindowFocusChanged(boolean hasFocus) {
        // TODO Auto-generated method stub
        super.onWindowFocusChanged(hasFocus);
        if(hasFocus)
        {
            Toast.makeText(MainActivity.this, "has focus", Toast.LENGTH_LONG).show();
                        // write code to remove keyboard
        }
    }
于 2012-10-08T05:25:38.123 回答
1
AlertDialog.Builder builder = new AlertDialog.Builder(EllipticalActivity.this);
builder.setTitle("title")
       .setMessage("message")
       .setCancelable(false)
       .setNegativeButton("Close", new DialogInterface.OnClickListener() {
           public void onClick(DialogInterface dialog, int id) {
               InputMethodManager inputManager = 
                   (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
               inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                                                    InputMethodManager.HIDE_NOT_ALWAYS);
               dialog.cancel();
           }
        });
        AlertDialog alert = builder.create();
        alert.show();
于 2012-10-08T04:23:39.763 回答
0

从 Activity onCreateView() 方法中,您可以执行以下操作:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)

或在清单 xml 中

android:windowSoftInputMode="stateAlwaysHidden"

它会在 Dismiss of Dialog 时自动隐藏软键盘

于 2016-04-05T11:22:04.053 回答
0

就我而言,解决方案是将键盘隐藏在对话框中

dialog.setOnDismissListener(new DialogInterface.OnDismissListener() {
    @Override
    public void onDismiss(DialogInterface dialog) {
        View view = activity.getCurrentFocus();
        if (view != null) {
            InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }
}); 
于 2015-09-18T09:51:33.003 回答