如何从我的主题xml文件自定义警报对话框按钮背景和标题分隔符

时间:2014-09-18 14:36:57

标签: android customization alertdialog android-theme

我坚持了整整2天,这样做。 到目前为止,我只能使用样式XML文件更改标题文本颜色。除此之外没有任何属性可行。几乎涵盖了所有STACK OVERFLOW问题,但没有运气,无法找到答案。

这就是我想要做的事情:

enter image description here

(对焦删除按钮)

截至目前,我只能通过编程获取titleDivider,Positive和Negative按钮并指定背景来完成此操作。但那说我讨厌通过编程方式做到这一点。

有人请帮助我。

1 个答案:

答案 0 :(得分:1)

您可以使用此项目AlertDialogPro。 将此项目包含在您的项目中并定义您的主题,如下所示:

<style name="YourAppTheme.AlertDialogProTheme" parent="AlertDialogProTheme.Holo.Light">
    <!-- Custom the title style -->
    <item name="android:windowTitleStyle">@style/YourDialogWindowTitle</item>
    <!-- Change the title divider to green -->
    <item name="adpTitleDividerBackground">@color/your_green_color</item>
    <!-- Change the button style -->
    <item name="adpButtonBarButtonStyle">@style/YourButtonStyle</item>
</style>

<style name="YourDialogWindowTitle" parent="DialogWindowTitle.Holo.Light">
    <item name="android:textColor">@color/your_green_color</item>
</style>

<style name="YourButtonStyle" parent="Widget.Holo.Button.Light">
    <item name="android:background">@drawable/your_button_background_selector</item>
    <item name="android:textColor">@color/your_button_text_selector</item>
</style>

并使用属性“alertDialogProTheme”:

为您的应用主题指定此主题
<style name="AppTheme" parent="AppBaseTheme">
  ...
  <item name="alertDialogProTheme">@style/YourAppTheme.AlertDialogProTheme</item>
</style>

使用AlertDialogPro.Builder构建对话框:

AlertDialogPro.Builder builder = new AlertDialogPro.Builder(getContext());
builder.setTitle("Delete").
    setMessage("Are you sure?").
    setPositiveButton("Delete", null).
    setNegativeButton("Cancel", null).
    show();