Атрибуты темы не работают правильно с VectorDrawable - PullRequest
0 голосов
/ 12 марта 2020

Я работаю над приложением, которое поддерживает несколько тем, темных и светлых, с 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 с изменением темы во время выполнения?

...