我正在尝试使用单个文本字段提示创建AlertDialog
。这是我用来创建它的代码:
final EditText url = new EditText(this);
new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_DARK)
.setTitle(R.string.mirror_title)
.setView(url)
.setPositiveButton(...)
.setNegativeButton(...)
.show();
当我针对API级别22运行时,按钮使用Material按预期样式,但EditText
不会:
在这里获取新样式EditText
需要做什么?
答案 0 :(得分:4)
您指定@android:style/Theme.DeviceDefault
作为提醒对话框主题,但您的EditText
正在使用Context
所代表的this
上设置的任何主题。
为确保提醒对话框的装饰和内容之间的一致性,您应始终使用提醒对话框的主题背景创建内容。
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this, ...)
.setTitle(R.string.mirror_title)
.setPositiveButton(...)
.setNegativeButton(...);
Context dialogContext = dialogBuilder.getContext();
EditText url = new EditText(dialogContext);
dialogBuilder.setView(url).show();
作为旁注,您可能需要在AndroidManifest.xml
中指定一个活动主题,并检查您的targetSdkVersion
是否已正确指定。除非您明确定位姜饼主题(例如Theme
或Theme.Light
),否则您不应该看到姜饼风格的小部件。