我阅读了这里的一些帖子并尝试了谷歌搜索。但我仍然有这个问题:
我制作了一个子类自定义对话框。它包含一个EditText和一个按钮(“确定”)。我希望键盘在对话框弹出时自动显示。
我通过添加以下内容成功实现了此操作:
imm = (InputMethodManager) EditDialog.this.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS);
在我的自定义对话框的onCreate()中。
imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
在我的dismiss()方法中。
这会在对话框弹出时打开键盘,并在我按下“确定”按钮后关闭键盘。
然而,如果软键盘已经打开并且我按下手机/模拟器的HOME按钮,则键盘将保持打开状态,因为 - 我想 - 我使用SHOW_FORCED强制打开它。因此,我尝试在对话框的父活动的onPause()方法中隐藏(使用InputMethodManager的toggleSoftInput())键盘,如果它是打开的。这似乎只能通过一个解决方法来实现,如这里所示。
简而言之:我希望当我的带有EditText和Button的对话框弹出时显示软键盘(焦点在EditText上)。我已经做到了,但涉及编写许多关闭它的hack代码。
编辑:我基于这个代码。