2016-03-05 21 views
20

Qual è il metodo corretto per utilizzare il nuovo VectorDrawable nella barra degli strumenti?Come posso utilizzare VectorDrawable con la barra degli strumenti Android?

Ho provato a utilizzare l'elemento app:srcCompat come illustrato di seguito, ma non è stato visualizzato nulla.

<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> 

Ho il mio layout di barra degli strumenti utilizzando android.support.v7.widget.Toolbar e libreria di supporto Android v23.2 su JB (16).

+0

si potrebbe provare MenuItem.setIcon() in runtime – vigilancer

+0

@vigilancer il tuo commento mi ha messo sulla strada giusta e funziona. Fai una vera risposta con un piccolo frammento e io lo accetterò come risposta. L'app – vwrynn

risposta

27

Risulta che è abbastanza facile. Supponi di avere il vettore estraibile vd_trash_24dp.

Descrizione menu L'elemento non è possibile indirizzare VectorDrawable direttamente con android:icon. Sembra ignorare anche app:srcCompat.

Ma. Come all we know;)

AppCompat fa supporto di carico drawable vettore quando sono riferimento in un altro contenitore drawable come uno StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable e RotateDrawable

Proviamoci, dovrebbe noi?

Creare 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> 

di

<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> 

strada magia davvero.

Sì, si potrebbe provare e impostare drawable in fase di esecuzione con MenuItem.setIcon(). Ma chi ne ha bisogno%)

+0

continua a bloccarsi nella libreria di supporto 24.1.1 – PYPL

+4

sembra funzionare ora (verificato in 24.2.1) senza 'StateListDrawable' fyi –

+0

Grazie! È stato molto utile! – inteist

Problemi correlati