如何在不同应用程序主题的对话框按钮中强制使用 ColorAccent?

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

我希望对话框的按钮文本使用

colorAccent

但是,在某些应用程序主题中,对话框的按钮文本使用

colorPrimary

这是我的发现:


Theme.AppCompat.Light.DarkActionBar - 对话框的按钮文本使用 colorAccent


Theme.MaterialComponents.DayNight.DarkActionBar - 对话框的按钮文本使用 colorPrimary


Theme.Material3.DayNight.NoActionBar - 对话框的按钮文本使用 colorPrimary


我想知道如何强制对对话框的按钮文本使用

colorAccent
,无论应用程序主题如何。

这是我正在使用的测试代码:

主题.xml

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->

    <!-- Theme.Material3.DayNight.NoActionBar = Dialog button use colorPrimary -->
    <!-- Theme.MaterialComponents.DayNight.DarkActionBar = Dialog button use colorPrimary -->
    <!-- Theme.AppCompat.Light.DarkActionBar = Dialog button use colorAccent -->

    <style name="Base.Theme.MyApplication" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="colorPrimary">#ff0000</item>    <!-- red -->
        <item name="colorAccent">#ff1778f2</item>   <!-- blue -->
    </style>

    <style name="Theme.MyApplication" parent="Base.Theme.MyApplication" />
</resources>

MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContentView(R.layout.activity_main)

        showDialog()
    }

    private fun showDialog() {
        val builder = AlertDialog.Builder(this)
        builder.setTitle("Confirmation")
        builder.setMessage("Do you want to proceed?")

        // Add OK button
        builder.setPositiveButton("OK") { dialog, which ->
            // Handle OK button click here
        }

        // Add Cancel button
        builder.setNegativeButton("Cancel") { dialog, which ->
            // Handle Cancel button click here
            dialog.dismiss()
        }

        // Create and show the AlertDialog
        val alertDialog = builder.create()
        alertDialog.show()
    }
}
android kotlin material-design material-components-android
1个回答
0
投票

不要仅仅为了设置对话框的样式而指定整个应用程序的主要颜色。请使用警报对话框的主题属性。请参阅下面的代码来查看如何更改对话框的按钮颜色:

<resources xmlns:tools="http://schemas.android.com/tools">
    <!-- Base application theme. -->
    <style name="Base.Theme.MyApplication" parent="Theme.Material3.DayNight.NoActionBar">
        <item name="alertDialogTheme">@style/MyDialog</item>
    </style>

    <style name="MyDialog" parent="ThemeOverlay.Material3.Dialog.Alert">
        <item name="buttonBarButtonStyle">@style/ButtonBarStyle</item>
    </style>

    <style name="ButtonBarStyle" parent="Widget.Material3.Button.TextButton.Dialog.Flush">
<!--        Specify your color accent instead-->
        <item name="android:textColor">#1C0808</item>
    </style>
</resources>
© www.soinside.com 2019 - 2024. All rights reserved.