我有这个对话框(我正在简化我的用例):
class EditShoppingListDialog extends AlertDialog {
public EditShoppingListDialog(Context context) {
super(context/*, R.style.AppCustomDialog*/);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_addshoppinglist);
setTitle("Mike Testing");
}
}
我在OnCreateDialog方法之外创建并使用了这个子类的AlertDialog(在我的Activity的onContextItemSelected中),如下所示:
AlertDialog dialog = new EditShoppingListDialog(this);
dialog.show();
现在,我已经使用这个代码库超过一个月了,从未发现任何问题,这让我想知道他们为什么建议使用AlertDialog.Builder
来创建自定义对话框。
当我将应用程序部署到真实设备时,我立即开始发现问题。最阻塞的是,即使单击AlertDialog中的EditText字段,我也无法显示软键盘(IME?)。
这是最好的部分;如果我说:
class EditShoppingListDialog extends Dialog {
...
}
如果单击对话框中的EditText,则会自动显示IME。我找到了这个thread,但是已接受的解决方案不适用于AlertDialog。
但是,我发现在我派生的AlertDialog的OnCreate上执行此操作有助于显示IME,但它落后于对话框,我无法与之交互:
InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT,0);
对于丢失的帖子我真的很抱歉,但我已经花了5个多小时的时间,并且非常感谢一些帮助。我坚持扩展AlertDialog的原因是因为我需要一个没有标题栏的对话框,它在Android Dialog文档中说我没有标题栏的对话框。
答案 0 :(得分:2)
设置没有标题的对话框很容易。 创建如下的样式,
<style name="no_title_dialog" parent="@android:style/Theme.Dialog">
<item name="android:windowNoTitle">true</item>
</style>
使用
进行初始对话Dialog notitleDialog = new Dialog(this, R.style.no_title_dialog);
对话框应显示为无标题
答案 1 :(得分:0)
拥有一个没有标题栏的AlertDialog
根本不是魔术:
AlertDialog.Builder builder;
AlertDialog alertDialog;
TextView v = new TextView(this);
v.setText("Should have no Bar...");
builder = new AlertDialog.Builder(this);
builder.setView(v);
alertDialog = builder.create();
alertDialog.show();
这看起来像这样:
(不,这不是Toast
!)。如果这不是您想要的,那么您应该更明确地指出“我需要一个没有标题栏的对话框”。