我希望对话框的按钮文本使用
colorAccent
。
但是,在某些应用程序主题中,对话框的按钮文本使用
colorPrimary
。
这是我的发现:
我想知道如何强制对对话框的按钮文本使用
colorAccent
,无论应用程序主题如何。
这是我正在使用的测试代码:
<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>
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()
}
}
不要仅仅为了设置对话框的样式而指定整个应用程序的主要颜色。请使用警报对话框的主题属性。请参阅下面的代码来查看如何更改对话框的按钮颜色:
<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>