opciones - ¿Cómo puedo usar VectorDrawable con la barra de herramientas de Android?
menu overflow android studio (1)
Resulta que es bastante fácil. Digamos que tienes un vector vd_trash_24dp
.
Describiendo MenuItem, no se puede abordar VectorDrawable directamente con el android:icon
. Parece ignorar la app:srcCompat
también.
Pero. Como todos sabemos ;)
AppCompat admite la carga de vectores dibujables cuando se hace referencia en otro contenedor dibujable, como StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable y RotateDrawable
Vamos a intentarlo, ¿deberíamos?
Crear 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>
que
<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>
De hecho la magia callejera.
Sí, se podría intentar establecer dibujable en tiempo de ejecución con MenuItem.setIcon()
. Pero quien necesita ese%)
¿Cuál es el método adecuado para usar el nuevo VectorDrawable en la barra de herramientas?
Intenté usar la app:srcCompat
elemento app:srcCompat
como se ilustra a continuación, pero no apareció nada.
<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>
Tengo mi propio diseño de barra de herramientas con android.support.v7.widget.Toolbar
y Android Support Library v23.2 en JB (16).