我在这里阅读了几篇文章,还尝试了谷歌搜索。但是我仍然有这个问题:
我做了一个子类化的自定义对话框。它包含一个 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())键盘。这似乎只能使用解决方法才能实现,如HERE所示。
TL;DR:我希望在弹出带有 EditText 和 Button 的对话框时显示软键盘(专注于 EditText)。我得到了这个工作,但它涉及编写许多黑客来正确关闭它。
编辑:我的代码基于这个