我在使用 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>
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>
在低于 24 的应用程序 API 上,对话框按钮使用 colorAccent 着色,但在 API 24 上不再是这种行为(文本为黑色,应为橙色)。见下文screenshot .
有没有人知道如何让按钮上的 accentColor 重新出现? 谢谢。
最佳答案
对于某些 AlertDialog
实现,按钮包含在 ButtonBar 中,并且从 buttonBarButtonStyle
中获取它们的样式。因此,您必须覆盖从父主题 (Theme.AppCompat.Light.Dialog.Alert
) 继承的设置。
将以下项目添加到 Widget.DialogStyle
:
<item name="buttonBarButtonStyle">@style/MyButtonStyle</item>
并添加另一个名为 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>
编辑
感谢 kirtan403 指出这一点:如果 Widget.AppCompat.Button.Borderless
不符合您的要求,您还可以为按钮使用其他父级样式。
安example by nicola.v...@icapps.com使用 Widget.AppCompat.Button.ButtonBar.AlertDialog
作为按钮的父样式可以在 AOSP 问题 220699 下找到:colorAccent 未应用于 Android N 上的 AlertDialog 按钮。
关于android - AlertDialog 按钮文本颜色与支持库 v24.2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39653391/