我缺少哪种样式来更改 AlertDialog 按钮颜色?与 MaterialAlertDialog 配合使用效果良好

问题描述 投票:0回答:1

编辑:我应该提到我已经阅读了很多关于

AlertDialog
样式的答案,并尝试了我能找到的每一个建议,所以请不要使其重复。

我正在测试一个示例类。如果我使用

MaterialAlertDialogBuilder
,我的按钮颜色在 Android 14 上很好。如果我使用
AlertDialog.Builder
,那么我的颜色是错误的。我不确定我的风格配置有什么错误。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="Theme.Alertdialogtest" parent="Theme.MaterialComponents.DayNight.NoActionBar" >
        <!-- Primary brand color. -->
        <item name="colorPrimary">#ffaacc</item>
        <item name="colorPrimaryVariant">@color/teal_700</item>
        <item name="colorOnPrimary">@color/black</item>
        <!-- Secondary brand color. -->
        <item name="colorSecondary">@color/teal_200</item>
        <item name="colorSecondaryVariant">@color/purple_200</item>
        <item name="colorOnSecondary">@color/black</item>

        <item name="alertDialogStyle">@style/MyAlertDialogTheme</item>
        <item name="materialAlertDialogTheme">@style/MyAlertDialogTheme</item>
    </style>

    <style name="MyAlertDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
        <item name="buttonBarNegativeButtonStyle">@style/alertButton</item>
        <item name="buttonBarNeutralButtonStyle">@style/alertButton</item>
        <item name="buttonBarPositiveButtonStyle">@style/alertButton</item>
    </style>

    <style name="alertButton" parent="Widget.AppCompat.Button.ButtonBar.AlertDialog">
        <item name="android:textColor">#791034</item>
    </style>
</resources>

此代码的按钮颜色为

colorPrimary

AlertDialog.Builder(this)
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("OK") { dialog, which ->
                // Respond to positive button press
            }
            .setNegativeButton("Cancel") { dialog, which ->
                // Respond to negative button press
            }
            .show()

此代码具有样式为

alertButton
android:textColor
:

的颜色按钮
MaterialAlertDialogBuilder(this)
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton("OK") { dialog, which ->
                // Respond to positive button press
            }
            .setNegativeButton("Cancel") { dialog, which ->
                // Respond to negative button press
            }
            .show()

这只是一个简单的测试应用程序来重现问题,我想显示的实际对话框来自第三方库,我对他们的代码有零控制,我唯一可以改变的是

AlertDialog
的样式。那我做错了什么?

android android-styles
1个回答
0
投票

我会回答我自己的问题。

看起来像

<item name="colorAccent">@color/color_accent</item>

适用于某些应用程序,但在我的应用程序上,由于某种未知的原因,唯一有效的是

colorOnPrimary

© www.soinside.com 2019 - 2024. All rights reserved.