2

我正在使用App 主题并使用限定符Theme.AppCompat.DayNight.NoActionBar为 Day 和 Night 主题定义颜色资源values-night

values/colors.xml

<color name="icon_color">#282C3C/color>

values-night/colors.xml

<color name="icon_color">#FFFFFF/color>

我有矢量可绘制对象,它使用来自主题值的颜色资源

<vector xmlns:android="http://schemas.android.com/apk/res/android" android:width="9dp" android:height="6dp" android:viewportWidth="9" android:viewportHeight="6">
    <path
        android:pathData="M1.398 0.383l2.958 3.09c0.079 0.081 0.207 0.082 0.285 0l2.992-3.087C7.948 0.06 8.46 0.063 8.773 0.394c0.304 0.323 0.303 0.84-0.004 1.16L4.784 5.74c-0.157 0.165-0.415 0.165-0.573 0L0.233 1.577c-0.315-0.329-0.31-0.86 0.01-1.183l0.023-0.022C0.582 0.054 1.088 0.06 1.398 0.383z"
        android:fillColor="@color/icon_color" />
</vector>

我使用app:srcCompat="@drawable/wp_ic_camera"没有任何背景或色调值来设置此可绘制对象,并AppCompatResources.getDrawable(view.context, drawableRes)在数据绑定中使用它来设置可绘制对象

用户可以在应用偏好中选择应用主题为浅色/深色或系统模式我使用更新主题

 val nightMode = when (theme) {
            AppTheme.DARK -> AppCompatDelegate.MODE_NIGHT_YES
            AppTheme.LIGHT -> AppCompatDelegate.MODE_NIGHT_NO
            AppTheme.SYSTEM -> AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM
        }
AppCompatDelegate.setDefaultNightMode(nightMode)

我还使用用户选择的最新主题更新了 ContextThemewrapper

问题是当设备主题为深色且应用程序主题设置为浅色时,它遵循系统主题以获取可绘制颜色

4

0 回答 0