Android: Como alterar o android: fillcolor com seletor em um vetor Drawable xml

Ícones da guia: Meu método atual é criar dois arquivos (ic_list_selected_24dp.xml e ic_list_unselected_24dp.xml; eles são basicamente os mesmos, mas apenas oandroid:fillColor='Color HEX CODE' são diferentes) e, em seguida, crie um seletor (selector_tabitem_list.xml) para alterar a cor desenhável quando o estado for alterado.

// @drawable/selector_tabitem_list.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto">
    <item android:drawable="@drawable/ic_list_selected_24dp" 
        android:state_selected="true" />
    <item android:drawable="@drawable/ic_list_unselected_24dp" 
        android:state_selected="false" />
</selector>

É meio que duplicado porque dois drawables são iguais.

O seletor não pode ser usado no desenho vetorial.

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="@drawable/selector"
        android:pathData="M19,3...."
</vector>

-

// @drawable/selector

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true">
        <color android:color="@color/itemSelected" />
    </item>
    <item android:state_selected="false">
        <color android:color="@color/itemUnselected" />
    </item>
</selector>

eandroid:fillColor="@color/state" ou.

// @color/state

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@android:color/white" android:state_selected="true" />
    <item android:color="@android:color/black" android:state_selected="false" />
</selector>

Existe alguma maneira de usar um drawable e mudar sua cor dinamicamente? Usando código hexadecimal rígido é melhor?

Obrigado.

questionAnswers(3)

yourAnswerToTheQuestion