Я работаю над приложением, которое поддерживает несколько тем, темных и светлых, с min sdk версии 21. Я обнаружил, что можно использовать атрибут темы (например,? Attr / logo_color) внутри VectorDrawable.
Так, например, если я устанавливаю атрибут темы для заливки цвета желаемого пути
<vector ...>
<path
android:pathData="..."
android:fillColor="?attr/logo_color"/>
</vector>
или задаю атрибут темы для тонирования целого вектора
<vector android:tint="?attr/logo_color">
...
</vector>
Я запускаю app (светлая тема), он правильно устанавливает цвет, но когда я меняю тему Activity.setTheme () (светлый на темный), цвет не меняется. Цвет всегда «кэшируется» до цвета предыдущей темы. Интересно, что на леденце и зефире это не работает, однако на Android 10 оно меняется правильно.
С другой стороны, если я установлю android: tint = "" цвет внутри ImageView
<ImageView
...
app:srcCompat="@drawable/ic_logo"
android:tint="?attr/logo_colo"/>
Работает со всеми версиями, но, конечно, меняет цвет всего рисованного.
Это какая-то ошибка или ее можно использовать атрибуты темы внутри VectorDrawable на более низком apis с изменением темы во время выполнения?