所以我想改变我的alertdialogs强调色,我把它添加到我的styles.xml
<style name="AppTheme.AlertDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
这就是我的基本风格:
<item name="android:alertDialogTheme">@style/AppTheme.AlertDialogTheme</item>
颜色已经改变,很酷,但现在我的所有对话框都变小了。如何在更改颜色时保留尺寸?
答案 0 :(得分:6)
通过查看google iosched代码,alertdialog主题需要从Theme.AppCompat.Light.Dialog.Alert继承而不仅仅是Theme.AppCompat.Light.Dialog。
两个警告。一,结果比以前更宽,但至少它不像包装内容那么窄。 二,这在pre-L设备上引起了奇怪的行为。 最终,我最终用
创建了所有提醒 AlertDialog.Builder dialog = new AlertDialog.Builder(context,
R.style.Theme_AppCompat_Light_Dialog_Alert_Custom
这适用于Alert Dialogs和Dialogs但由于某种原因它没有主题Progress Dialogs。 我不得不从我的基本主题中删除android:alertDialogTheme并将其放在v21 / styles.xml中,以便在Pre-L设备上没有不良行为(双背景)的主题进度对话框。
答案 1 :(得分:4)
对话框有两种样式:alertDialogTheme
用于警告对话框,dialogTheme
用于其他对话框(例如DatePickerDialog
,但也可以更具体地自定义) 。关键点在于,每个都需要不同的基本样式,因为它们具有不同的布局参数。
因此,要正确使用主题对话框,请使values-v21\styles.xml
文件或多或少地像这样:
<!-- Theme -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
<item name="android:dialogTheme">@style/AppThemeDialog</item>
<item name="android:alertDialogTheme">@style/AppThemeAlertDialog</item>
</style>
<!-- Styles for dialogs in Lollipop, use accent color from applicable theme. -->
<style name="AppThemeDialog" parent="android:Theme.Material.Light.Dialog">
<item name="android:colorAccent">?attr/colorAccent</item>
</style>
<style name="AppThemeAlertDialog" parent="android:Theme.Material.Light.Dialog.Alert">
<item name="android:colorAccent">?attr/colorAccent</item>
</style>
这是针对 Light with Dark Action Bar 变体,虽然Light和Dark版本大致相同,只是在任何地方更改父样式。
作为一个优势,此设置将读取应用程序主题中的accentColor
集,因此您无需在此重复这些设置。
答案 2 :(得分:0)
您正在使用 Theme.AppCompat.Light.Dialog 而不是AlertDialogs的正确主题: Theme.Material.Light.Dialog.Alert 。据我所知,AppCompat中没有AlertDialogs的主题,因此只能在values-v21文件夹中使用它。