style name = "AppTheme" parent = "Theme.MaterialComponents.Light.DarkActionBar"
и вкладок: Мой текущий метод заключается в создании двух файлов (ic_list_selected_24dp.xml и ic_list_unselected_24dp.xml; они в основном одинаковы, но толькоandroid:fillColor='Color HEX CODE'
отличаются), а затем создайте селектор (selector_tabitem_list.xml), чтобы изменить цвет рисования при изменении состояния.
// @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>
Это как бы дублируется, потому что два drawables одинаковы.
Селектор не может использоваться в векторном режиме.
<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>
, а такжеandroid:fillColor="@color/state"
или.
// @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>
Есть ли способ использовать один рисунок и динамически менять его цвет? Использование жесткого шестнадцатеричного кода лучше?
Благодарю.