我正在使用输入框AlertDialog
.在EditText
该对话框中本身自动对焦,当我打电话AlertDialog.show()
,但软键盘未自动显示.
如何在显示对话框时自动显示软键盘?(并且没有物理/硬件键盘).与按下"搜索"按钮调用全局搜索的方式类似,将自动显示软键盘.
我的问题是我的自定义 alertdialog 类没有正确显示软键盘。我正在使用
SettingsDialog settingsDialog = new SettingsDialog(MainActivity.this);
settingsDialog.show();
Run Code Online (Sandbox Code Playgroud)
并且软键盘没有显示。我已经按照其他 stackoverflow 的答案来显示键盘... Show soft keyboard for dialog
如果我不使用自定义类,它会起作用
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
mBuilder.setView(R.layout.alertdialog_settings);
AlertDialog alertDialog = mBuilder.create();
alertDialog.show();
Run Code Online (Sandbox Code Playgroud)
但是,当使用自定义 AlertDialog 类时,我似乎无法获得与上图相同的结果
我试过手动显示键盘
SettingsDialog settingsDialog = new SettingsDialog(MainActivity.this);
settingsDialog.show();
InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
Run Code Online (Sandbox Code Playgroud)
然而,它显示了alertdialog 后面的键盘,并且不会产生与AlertDialog Builder 相同的效果。
如何使用自定义 AlertDialog 显示软键盘以具有使用 AlertDialog Builder 的输出?
编辑:
我也尝试在 AlertDialog 的 onCreate 方法中手动显示它
public class SettingsDialog extends AlertDialog {
public SettingsDialog(@NonNull Context context, String subName) {
super(context);
this.mContext …
Run Code Online (Sandbox Code Playgroud)