AlertDialog按钮文本颜色,支持库v24.2.1

Chr*_*sen 9 android android-layout android-alertdialog android-support-library androiddesignsupport

我遇到了AlertDialog的问题.这些按钮不再使用accentColor来设置按钮文本颜色.

我正在使用最新的支持库v24.2.1.我通过以下方式在styles.xml中设置对话框的样式:

<style name="Base.Theme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:alertDialogTheme">@style/Widget.DialogStyle</item>
    <item name="alertDialogTheme">@style/Widget.DialogStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)

并且Widget.DialogStyle看起来像这样:

<style name="Widget.DialogStyle" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
    <item name="android:colorAccent" tools:targetApi="lollipop">@color/primaryColor</item>
    <item name="colorAccent">@color/primaryColor</item>
    <item name="android:textColorPrimary">@color/primaryText</item>
    <item name="android:textColor">@color/primaryText</item>
    <item name="android:background">@color/backgroundColor</item>
    <item name="android:textAppearanceLarge">@color/primaryText</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在app API低于24时,对话框按钮用colorAccent着色,但在API 24上,这不再是行为(文本是黑色,应该是橙色).请参阅以下屏幕截图.

有没有人知道如何让按钮上的accentColor?谢谢.

0X0*_*gar 14

对于某些AlertDialog实现,按钮包含在ButtonBar中从中获取样式buttonBarButtonStyle.因此,您必须覆盖从父主题(Theme.AppCompat.Light.Dialog.Alert)继承的设置.

将以下项添加到Widget.DialogStyle:

<item name="buttonBarButtonStyle">@style/MyButtonStyle</item>
Run Code Online (Sandbox Code Playgroud)

并添加另一个名为MyButtonStyle这样的样式:

<style name="MyButtonStyle" parent="Widget.AppCompat.Button.Borderless">
    <!-- Set background drawable and text size of the buttons here
    <item name="android:background">@color/my_dialog_dark</item>-->
    <item name="android:textSize">18sp</item>

    <!-- this is the button text color!    -->
    <item name="android:textColor">@color/primaryColor</item>
</style>
Run Code Online (Sandbox Code Playgroud)

编辑

感谢kirtan403指出这一点:如果Widget.AppCompat.Button.Borderless不符合您的要求,您还可以使用另一种父样式.

nicola.v的一个例子... @ icapps.com使用Widget.AppCompat.Button.ButtonBar.AlertDialog按钮的父样式可以在AOSP问题220699下找到:colorAccent不适用于Android N上的AlertDialog按钮.