Android 如何在框架中定义新主题并覆盖警报对话框样式

Android 如何在框架中定义新主题并覆盖警报对话框样式,android,android-alertdialog,android-theme,android-styles,Android,Android Alertdialog,Android Theme,Android Styles,我想在我的应用程序中定义一个新主题,并覆盖默认的Holo AlertDialog样式。但是我无法更改对话框的背景或布局。 我部分地听从了他的建议 以下是主题: <style name="CD1.Theme" parent="android:style/Theme.Holo"> <!-- AlertDialog attributes --> <item name="android:alertDialogTheme">@style/CD1.Them

我想在我的应用程序中定义一个新主题,并覆盖默认的Holo AlertDialog样式。但是我无法更改对话框的背景或布局。 我部分地听从了他的建议

以下是主题:

<style name="CD1.Theme" parent="android:style/Theme.Holo">
    <!-- AlertDialog attributes -->
    <item name="android:alertDialogTheme">@style/CD1.Theme.Dialog.Alert</item>
    <item name="android:alertDialogStyle">@style/CD1.AlertDialog</item>
    <item name="android:alertDialogCenterButtons">false</item>
    <item name="android:alertDialogIcon">@drawable/cd1_ic_dialog_alert_holo</item>
</style>
<style name="CD1.Theme.Dialog.Alert" parent="android:style/Theme.Holo.Dialog.Alert">
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowTitleStyle">@style/CD1.DialogWindowTitle</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>

@style/CD1.Theme.Dialog.Alert
@样式/CD1.0对话框
假的
@可绘图/cd1\u ic\u对话框\u警报\u全息图
@android:彩色/透明
@style/CD1.DialogWindowTitle
@空的
真的
@android:style/Animation.Dialog
@android:dimen/dialog\u min\u width\u major
@android:dimen/dialog\u min\u width\u minor
以下是样式:

<style name="CD1.AlertDialog" parent="android:style/AlertDialog.Holo">
    <item name="android:fullDark">@drawable/cd1_dialog_full_holo</item>
    <item name="android:topDark">@drawable/cd1_dialog_top_holo</item>
    <item name="android:centerDark">@drawable/cd1_dialog_middle_holo</item>
    <item name="android:bottomDark">@drawable/cd1_dialog_bottom_holo</item>
    <item name="android:fullBright">@drawable/cd1_dialog_full_holo</item>
    <item name="android:topBright">@drawable/cd1_dialog_top_holo</item>
    <item name="android:centerBright">@drawable/cd1_dialog_middle_holo</item>
    <item name="android:bottomBright">@drawable/cd1_dialog_bottom_holo</item>
    <item name="android:bottomMedium">@drawable/cd1_dialog_bottom_holo</item>
    <item name="android:centerMedium">@drawable/cd1_dialog_middle_holo</item>
    <item name="android:layout">@layout/cd1_alert_dialog</item>
</style>
<style name="CD1.DialogWindowTitle" parent="android:style/DialogWindowTitle.Holo">
    <item name="android:maxLines">1</item>
    <item name="android:scrollHorizontally">true</item>
    <item name="android:textAppearance">@android:style/TextAppearance.Holo.DialogWindowTitle</item>
    <item name="android:gravity">center</item>
</style>

@可绘制/cd1\u对话框\u完整\u全息图
@可绘制/cd1\u对话框\u顶部\u全息图
@可绘制/cd1\u对话框\u中间\u全息图
@可绘制/cd1\u对话框\u底部\u全息图
@可绘制/cd1\u对话框\u完整\u全息图
@可绘制/cd1\u对话框\u顶部\u全息图
@可绘制/cd1\u对话框\u中间\u全息图
@可绘制/cd1\u对话框\u底部\u全息图
@可绘制/cd1\u对话框\u底部\u全息图
@可绘制/cd1\u对话框\u中间\u全息图
@布局/cd1\u警报\u对话框
1.
真的
@android:style/TextAppearance.Holo.DialogWindowTitle
居中
它不起作用。默认的全息布局仍然显示。我该怎么办? 谢谢。

@style/CD1.AlertDialog
CD1.Theme
移动到
CD1.Theme.Dialog.Alert

<style name="CD1.Theme" parent="android:style/Theme.Holo">
    <!-- AlertDialog attributes -->
    <item name="android:alertDialogTheme">@style/CD1.Theme.Dialog.Alert</item>
    <item name="android:alertDialogCenterButtons">false</item>
    <item name="android:alertDialogIcon">@drawable/cd1_ic_dialog_alert_holo</item>
</style>

<style name="CD1.Theme.Dialog.Alert" parent="android:style/Theme.Holo.Dialog.Alert">
    <item name="android:alertDialogStyle">@style/CD1.AlertDialog</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowTitleStyle">@style/CD1.DialogWindowTitle</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
</style>

@style/CD1.Theme.Dialog.Alert
假的
@可绘图/cd1\u ic\u对话框\u警报\u全息图
@样式/CD1.0对话框
@android:彩色/透明
@style/CD1.DialogWindowTitle
@空的
真的
@android:style/Animation.Dialog
@android:dimen/dialog\u min\u width\u major
@android:dimen/dialog\u min\u width\u minor
顺便说一下:

android:layout
属性需要API11

如果你正在开发低于11的SDK,你可以考虑这个项目: