当我这样做时在 android O 上:
<style name="MyTheme" parent="@android:style/Theme.Material.Light.NoActionBar">
<item name="android:textColor">#ff0000</item>
</style>
我的警报对话框的文本按钮颜色改变了,但这在 Lollipop 下不起作用。更糟糕的是,在 Lollipop 上,它会更改警报对话框标题的颜色。
如何从 kitkat 到 android O 我可以全局更改所有 alertdialog 按钮的字体颜色?
最佳答案
借助 MaterialComponents 主题和 MaterialAlertDialogBuilder
,您可以使用应用主题中的 materialAlertDialogTheme
属性全局定义样式。
类似于:
<style name="AppTheme" parent="Theme.MaterialComponents.DayNight">
<item name="materialAlertDialogTheme">@style/My_MaterialAlertDialog</item>
</style>
然后你可以定义一个自定义样式:
<style name="My_MaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<!-- Style for positive button -->
<item name="buttonBarPositiveButtonStyle">@style/PositiveButtonStyle</item>
<!-- Style for negative button -->
<item name="buttonBarNegativeButtonStyle">@style/NegativeButtonStyle</item>
<!-- Style for neutral button -->
<item name="buttonBarNeutralButtonStyle">@style/NeutralButtonStyle</item>
</style>
按钮样式定义为:
<style name="PositiveButtonStyle" parent="@style/Widget.MaterialComponents.Button">
<item name="android:textColor">#FFFFFF</item>
<item name="backgroundTint">@color/primaryDarkColor</item>
</style>
<style name="NegativeButtonStyle" parent="@style/Widget.MaterialComponents.Button.TextButton.Dialog">
<item name="android:textColor">@color/primaryDarkColor</item>
</style>
<style name="NueutralButtonStyle" parent="@style/Widget.MaterialComponents.Button.TextButton.Dialog">
....
</style>
使用库的 1.1.0 版本,您还可以使用自定义样式中的 materialThemeOverlay
简单地覆盖默认颜色:
<style name="My_MaterialAlertDialog" parent="@style/ThemeOverlay.MaterialComponents.MaterialAlertDialog">
<item name="materialThemeOverlay">@style/DialogButtonOverlay</item>
</style>
<style name="DialogButtonOverlay">
<item name="colorPrimary">@color/...</item>
</style>
关于android - 如何使用样式全局更改 AlertDialog 上的按钮文本颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52836424/