Quelle est la bonne méthode pour utiliser le nouveau VectorDrawable dans la barre d'outils?
J'ai essayé d'utiliser le app:srcCompat
élément comme illustré ci-dessous, mais rien ne s'est affiché.
<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>
J'ai ma propre disposition de barre d'outils en utilisant Android.support.v7.widget.Toolbar
et Android Support Library v23.2 sur JB (16).
Il s'avère que c'est assez facile. Disons que vous avez un vecteur dessinable vd_trash_24dp
.
Décrire MenuItem on ne peut pas adresser directement VectorDrawable avec Android:icon
. Il semble également ignorer app:srcCompat
.
Mais. Comme tout ce que nous savons ;)
AppCompat prend en charge le chargement de dessins vectoriels lorsqu'ils sont référencés dans un autre conteneur dessinable tel que StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable et RotateDrawable
Essayons, devrions-nous?
Créer 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>
la magie de la rue en effet.
Oui, on pourrait essayer de définir drawable au moment de l'exécution avec MenuItem.setIcon()
. Mais qui a besoin de ce%)