android - AlertDialog 按钮文本颜色与支持库 v24.2.1

标签 android android-layout android-support-library android-alertdialog androiddesignsupport

我在使用 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/

相关文章:

android - 获取 IP 地址,但在 Android 中为 xxx.xxx.xxx.xxx 格式

android - 相对布局中的多个 ListView ?

android - 约束布局在 API 22 中异常工作

android.content.res.Resources$NotFoundException 文件 res/drawable/$my_app_img__0.xml 来自颜色状态列表资源 ID #0x7f07000a

android - fragment 已添加。支持库

android - IntelliJ 和 android.support.v7.widget.GridLayout

java - 如何在 TextClock 中强制采用 12 小时时间格式?

android - 如何在 Mapbox 4.1 中添加自己的图 block

android - 使用 android volley 库解析 JSON 数组中的 JSON 对象

android - 在底部显示广告而不与 ListView 重叠