Android: Cómo cambiar android: fillcolor con selector en un Vector Drawable xml
Iconos de pestañas: mi método actual es crear dos archivos (ic_list_selected_24dp.xml e ic_list_unselected_24dp.xml; son básicamente iguales pero solo elandroid:fillColor='Color HEX CODE'
son diferentes), y luego cree un selector (selector_tabitem_list.xml) para cambiar el color dibujable cuando se cambia el estado.
// @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>
Está algo duplicado porque dos elementos dibujables son iguales.
El selector no puede usarse en vectores dibujables.
<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>
yandroid:fillColor="@color/state"
ya sea.
// @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>
¿Hay alguna manera de usar un dibujable y cambiar su color dinámicamente? Usar código hexadecimal duro es mejor?
Gracias.