Ответ 1
Оказывается, это довольно легко.
Скажем, у вас есть векторный drawable vd_trash_24dp
.
Описание MenuItem нельзя напрямую связать с VectorDrawable с помощью android:icon
. Кажется, что игнорируется и app:srcCompat
.
Но. Как все, что мы знаем;)
AppCompat поддерживает загрузку векторных чертежей, когда они упомянутый в другом контейнере-контейнере, таком как StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable и RotateDrawable
Попробуем, не так ли?
Создать StateListDrawable vd_test_vd
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/vd_trash_24dp" />
</selector>
чем
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
<item android:id="@+id/menu_action_filter"
android:title="@string/menu_action_filter"
android:icon="@drawable/vd_test_vd"
android:orderInCategory="100"
app:showAsAction="always"/>
</menu>
Уличная магия действительно.
Да, можно попробовать и установить во время выполнения с помощью MenuItem.setIcon()
. Но кому это нужно%)