当用户点击按钮时,我正在使用AlertDialog弹出并询问用户一些信息。
对话框工作正常,我得到了自己解散的用户信息。
然而,当应用程序将焦点返回到我的主视图时......它将焦点设置为EditText小部件,这会导致键盘显示在该视图中。
我不希望键盘出现,除非用户明确地将焦点放在该字段上,因此如何更改/覆盖默认行为,以便在解除AlertDialog后它不会在此字段上自动对焦。 / p>
当视图最初膨胀时,它不会以这种方式运行,该字段被聚焦(突出显示),但键盘不可见,只有在用户点击该字段后,键盘才会在应用程序启动时出现。对话解雇后的这种行为完全不同......有什么想法吗?
(没有EditText不在警报对话框的按钮附近,所以它不会像第二次点击或某事意外发生或点击正在向上传递。)
答案 0 :(得分:2)
在解除对话框后尝试执行此操作:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
答案 1 :(得分:2)
当您关闭对话框时,您可以要求InputMethodManager
重新签名键盘:
EditText mValue; //The input view in your Dialog
//Close the keyboard
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mValue.getWindowToken(), 0);
希望有帮助!
答案 2 :(得分:1)
问题如上面的评论中所述,我没有从ALERTDIALOG中解雇键盘,我正在做出错误的假设,即当对话框被解除时键盘也是如此。这个假设是错误的。
警报对话框的键盘未被关闭,视图返回到父视图,并且由于父视图中的编辑文本得到了焦点,因此键盘自动更新以便为此视图正确显示。
在对话框关闭侦听器中尝试解除键盘没有删除键盘,因为他们试图解除父窗口中字段的键盘,并且在执行时它仍然绑定到alertview中的字段。
将dismisskeyboard调用添加到onclick事件,该事件解除了alertDialog中edittext字段的拨出,解决了问题。