【发布时间】:2019-12-29 21:18:58
【问题描述】:
我的问题是我的自定义 alertdialog 类没有正确显示软键盘。我正在使用
创建它SettingsDialog settingsDialog = new SettingsDialog(MainActivity.this);
settingsDialog.show();
并且软键盘没有显示。我已经按照其他 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();
但是,当使用自定义 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);
}
但是,它在 alertdialog 后面显示键盘,并没有提供与 AlertDialog Builder 相同的效果。
如何使用自定义 AlertDialog 显示软键盘,以便像使用 AlertDialog Builder 一样输出?
编辑:
我也尝试在 AlertDialog 的 onCreate 方法中手动显示它
public class SettingsDialog extends AlertDialog {
public SettingsDialog(@NonNull Context context, String subName) {
super(context);
this.mContext = context;
this.mSubName = subName;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alertdialog_settings);
InputMethodManager imm = (InputMethodManager)
mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
if(imm != null){
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
}
}
但是这仍然会导致键盘显示在 alertDialog 后面
【问题讨论】:
-
你能公开设置对话框吗?
-
公共设置对话框?
-
是的,完整的代码类 SettingsDialog
-
只是构造函数和Edit Above中的onCreate方法^
-
SettingsDialog 扩展 Dialog ?
标签: android android-alertdialog android-softkeyboard