API 21(棒棒糖)Android 上的主题对话框

Theming Dialog on API 21 (Lollipop) Android

我目前正尝试在我正在制作的 android 应用程序上设置警报对话框的主题。 我可以通过 API 9(应用程序的分钟)到 API 19/20(KitKat)作为主题。

但是,我无法正确设置 API 21 (Lollipop) 主题。我不喜欢默认主题的 off-white/light-gray 颜色,所以我试图将整个背景设为白色。

我只能通过将对话框布局的背景设置为白色,并将按钮背景设置为白色的选择器来完成一定数量的工作。

按钮后面有一条 space 条(整个底部),但仍然是灰色。我已经尝试研究是否可以通过主题化 buttonBarStyle 属性来更改它,但没有任何运气。

以下是一些代码片段:

主题:

    <style name="myTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:alertDialogStyle">@style/AlertDialogCustom</item>
    </style>

自定义警报对话框主题:

    <style name="AlertDialogCustom" parent="@android:style/Theme.Dialog">
        <item name="android:bottomBright">@color/white</item>
        <item name="android:bottomDark">@color/white</item>
        <item name="android:bottomMedium">@color/white</item>
        <item name="android:centerBright">@color/white</item>
        <item name="android:centerDark">@color/white</item>
        <item name="android:centerMedium">@color/white</item>
        <item name="android:fullBright">@color/white</item>
        <item name="android:fullDark">@color/white</item>
        <item name="android:topBright">@color/white</item>
        <item name="android:topDark">@color/white</item>
    </style>

我在对话框主题中尝试过一些类似的东西。 没有任何效果:

    <item name="android:background">@color/white</item>
    <item name="android:colorBackground">@color/white</item>
    <item name="android:buttonBarStyle">@style/CustomButtonBarStyle</item>

CustomButtonBarStyle:

    <style name="CustomButtonBarStyle" parent="@android:style/ButtonBar">
        <item name="android:background">@color/white</item>
        <item name="android:divider">@color/white</item>
    </style>

如有任何帮助,我们将不胜感激!

发现我需要使用

<item name="android:alertDialogTheme">@style/AlertDialogCustom</item>

而不是 alertDialogStyle。不知道为什么会有所不同,我希望两者都能起作用,因为 Style 一直工作到 api 21.

我在提出这个问题后发布了这个答案,我最终想出的解决方案(我可能对上述答案有其他问题,我不记得了)是重新创建整个对话框使用布局,并在布局中使用自定义按钮。