0

我通过扩展 Dialog 类创建了一个自定义对话框。

在我的应用程序中,我有一个 EditText,用户在从操作栏完成后按下 ok,因此键盘处于打开状态。然后出现一个说一切正常的CustomDialog,点击后我像这样关闭键盘

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);

但键盘保持打开状态。如果我创建一个构建器并执行相同的操作,则键盘会隐藏。另一个线索是edittext的inputType是数字但是当对话框出现时它变成了文本。

感谢您的任何建议或想法。

4

1 回答 1

0

您必须在构造函数中添加以下代码

getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

通常您会希望在当前输入法之上显示一个对话框,因为它没有理由接受文本。您可以通过使用以下代码设置 WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM 窗口标志(假设您的 Dialog 采用输入焦点,因为它是默认值)来做到这一点:

getWindow().setFlags(WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM,
     WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);

也可以在这里找到

于 2013-06-26T09:18:15.273 回答