更改/自定义首选项屏幕警报对话框

问题描述

我已经使用androidx首选项库创建了首选项屏幕。问题是,当我单击EditTextPreference时,警报对话框是完全白色的。我猜是因为我在应用程序主题中定义了主文本颜色和辅助文本颜色。那么,如何为自定义警报对话框应用自定义主题?这是当我点击EditTextPreference时对话框的外观:

enter image description here

Style.xml:

document.ready

colors.xml

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/layoutBG</item>
    <item name="backgroundColor">@color/layoutMainBG</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:textColor">@color/textPrimaryLight</item>
    <item name="android:textColorSecondary">@color/textSecondaryLight</item>
</style>

解决方法

我通过在AppTheme中添加这两行来修复它

        <item name="colorBackgroundFloating">@color/layoutBG</item>
        <item name="android:editTextColor">@color/textPrimaryLight</item>

所以我的新AppTheme看起来像这样

    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorAccent</item>
        <item name="colorPrimaryDark">@color/layoutBG</item>
        <item name="backgroundColor">@color/layoutMainBG</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:textColor">@color/textPrimaryLight</item>
        <item name="android:textColorSecondary">@color/textSecondaryLight</item>
        <item name="colorBackgroundFloating">@color/layoutBG</item>
        <item name="android:editTextColor">@color/textPrimaryLight</item>
    </style>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...