首页 > 解决方案 > ListPreference 列表选项文本颜色

问题描述

我正在尝试设置 ListPreference 对话框的样式以适应深色主题,并使用我的代码给出的强调色。但是,无论我添加什么属性,每个选项的文本颜色似乎都不会改变。有没有办法做到这一点而不必创建我自己的 Dialog 类?Ps 我已经尝试过这个答案中给出的解决方案:ListPreference text color 不,它似乎不起作用这是来自 styles.xml 的所需代码:(不是整个代码,但这是我需要展示的全部内容)

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="dialogPreferenceStyle">@style/DialogBoxTheme</item>
    <item name="listDividerAlertDialog">@style/DialogBoxTheme</item>
    <item name="alertDialogStyle">@style/DialogBoxTheme</item>
    <item name="alertDialogTheme">@style/DialogBoxTheme</item>
</style>

<style name="DialogBoxTheme" parent="ThemeOverlay.AppCompat.Dialog.Alert">
    <item name="android:layout_centerHorizontal">true</item>
    <item name="android:layout_centerVertical">true</item>
    <item name="android:layout_gravity">center</item>
    <item name="android:layout_width">320dp</item>
    <item name="android:layout_height">200dp</item>
    <item name="android:layout_marginStart">16dp</item>
    <item name="android:layout_marginEnd">16dp</item>
    <item name="android:textColorPrimary">@color/colorPrimary</item>
    <item name="android:textColorSecondary">@color/colorPrimary</item>
    <item name="android:textColorHint">@color/Silver</item>
    <item name="android:textColorTertiary">@color/colorAccent</item>
    <item name="android:textColor">@color/colorPrimary</item>
    <item name="android:colorAccent">@color/colorAccent</item>
    <item name="android:background">@color/cpWhite</item>
    <item name="textColorAlertDialogListItem">@color/colorPrimary</item>
    <item name="android:textColorAlertDialogListItem">@color/colorPrimary</item>
</style>

(请注意,我已将 colorPrimary 和 colorAccent 设置为随主题变化)

这是它给出的输出: ListPreference 对话框外观

标签: android-layoutandroid-preferences

解决方案


回答我自己的问题:我忘了添加属性

<item name="android:alertDialogTheme">@style/DialogBoxTheme</item>

到 style.xml 中的 AppTheme。


推荐阅读