为什么我的 EditText 样式不匹配我的 AlertDialog?
Why isn't my EditText styled to match my AlertDialog?
我正在尝试创建带有单个文本字段提示的 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
?
您正在指定 @android:style/Theme.DeviceDefault
作为您的提醒对话框主题,但是您的 EditText
使用的是 this
所代表的 Context
上设置的任何主题。
为确保警报对话框的装饰和内容之间的一致性,您应始终使用警报对话框的主题上下文创建内容。
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
中指定一个 activity 主题并检查您的 targetSdkVersion
是否指定正确。除非您明确针对姜饼主题(例如 Theme
或 Theme.Light
),否则您不应看到姜饼样式的小部件。
我正在尝试创建带有单个文本字段提示的 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
?
您正在指定 @android:style/Theme.DeviceDefault
作为您的提醒对话框主题,但是您的 EditText
使用的是 this
所代表的 Context
上设置的任何主题。
为确保警报对话框的装饰和内容之间的一致性,您应始终使用警报对话框的主题上下文创建内容。
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
中指定一个 activity 主题并检查您的 targetSdkVersion
是否指定正确。除非您明确针对姜饼主题(例如 Theme
或 Theme.Light
),否则您不应看到姜饼样式的小部件。