Подтвердить что ты не робот

Как я могу использовать VectorDrawable с помощью панели инструментов Android?

Каков правильный метод использования нового VectorDrawable на панели инструментов?

Я попытался использовать элемент app:srcCompat, как показано ниже, но ничего не появилось.

<menu
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:app="http://schemas.android.com/apk/res-auto">
  <item
    app:srcCompat="@drawable/ic_clear"
    app:showAsAction="ifRoom" />
</menu>

У меня есть собственный макет панели инструментов с помощью android.support.v7.widget.Toolbar и Android Support Library v23.2 на JB (16).

4b9b3361

Ответ 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(). Но кому это нужно%)