我能够很容易地更改常规 Dialog 的背景,现在我也想将我的特定背景颜色分配给 AlertDialog。我已经从 android-17/styles.xml 中提取了必要的部分(我不能简单地引用子类的部分)并成功地改变了按钮框 bg 颜色:
<!-- Extracted from styles.xml for Holo theme -->
<style name="AlertButtonBarWithBackground" parent="@android:style/Holo.ButtonBar.AlertDialog">
<item name="android:background">@color/dialog_background_color</item>
</style>
<style name="AndroidHoloTextAppearance">
<item name="android:textColor">?android:attr/textColorPrimary</item>
<item name="android:textColorHighlight">?android:attr/textColorHighlight</item>
<item name="android:textColorHint">?android:attr/textColorHint</item>
<item name="android:textColorLink">?android:attr/textColorLink</item>
<item name="android:textSize">18sp</item>
<item name="android:textStyle">normal</item>
</style>
<style name="AndroidDialogWindowTitle">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@android:style/TextAppearance.DialogWindowTitle</item>
</style>
<style name="AndroidDialogWindowTitle.Holo">
<item name="android:maxLines">1</item>
<item name="android:scrollHorizontally">true</item>
<item name="android:textAppearance">@style/AndroidHoloTextAppearance</item>
</style>
<style name="AlertDialogTheme" parent="@android:style/Theme.Holo.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowTitleStyle">@style/AndroidDialogWindowTitle.Holo</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<item name="android:buttonBarStyle">@style/AlertButtonBarWithBackground</item>
</style>
<!-- End of extracted fragment -->
<style name="ActivityTheme" parent="android:Theme.Holo">
<item name="android:alertDialogTheme">@style/AlertDialogTheme</item>
</style>
但无论我如何尝试改变文本区域背景,对话框周边的阴影背景也会改变。常规对话框不是这种情况,我已将 bg 颜色设置如下:
@color/dialog_background_color
它仍然有漂亮的标准阴影,没有被背景颜色改变,所以我相信这也可以用于警报对话框?..