我正在使用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
问题是当设备主题为深色且应用程序主题设置为浅色时,它遵循系统主题以获取可绘制颜色