我通过扩展Dialog类创建了一个自定义对话框。
在我的应用程序中,我有一个EditText,用户在操作栏完成后按下确定,因此键盘已打开。然后出现一个说明一切正常的CustomDialog,点击后我就像这样关闭键盘
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(edittext.getWindowToken(), 0);
但是键盘保持打开状态。如果我创建一个构建器并执行相同的键盘隐藏。另一个线索是edittext的inputType是数字,但是当对话框出现时它变成文本。
感谢您提出任何建议或意见。
答案 0 :(得分:0)
您必须在costructor中添加以下代码
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);
还找到here