2016-03-05 5 views
20

Was ist die richtige Methode, um das neue VectorDrawable in der Symbolleiste zu verwenden?Wie kann ich VectorDrawable mit der Android Toolbar verwenden?

Ich habe versucht, das app:srcCompat Element wie unten dargestellt zu verwenden, aber nichts zeigte sich.

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

Ich habe mein eigenes Symbolleiste Layout android.support.v7.widget.Toolbar und Android Support Library v23.2 auf JB (16) verwendet wird.

+0

könnte man MenuItem.setIcon() zur Laufzeit ausprobieren – vigilancer

+0

@vigilancer Ihr Kommentar bringt mich auf den richtigen Weg und es funktioniert. Mache eine Antwort mit einem kleinen Ausschnitt und ich akzeptiere es als Antwort. – vwrynn

Antwort

27

Es stellt sich heraus, es ist ziemlich einfach. Sagen Sie, Sie haben Vektor Zeichen vd_trash_24dp.

Beschreiben von MenuItem kann VectorDrawable nicht direkt mit android:icon adressiert werden. Es scheint zu ignorieren app:srcCompat auch.

Aber. Als all we know;)

AppCompat tut Unterstützung Belastungsvektor Drawables wenn sie in einem anderen ziehbar Behälter, wie ein StateListDrawable referenziert sind, InsetDrawable, LayerDrawable, LevelListDrawable und RotateDrawable

Lassen Sie uns es versuchen sollte wir?

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

als

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

Straße Magie in der Tat.

Ja, man könnte versuchen und zur Laufzeit mit MenuItem.setIcon() zeichnen. Aber wer braucht das%)

+0

App stürzt auf Support-Bibliothek 24.1.1 – PYPL

+4

das scheint jetzt zu arbeiten (verifiziert in 24.2.1) ohne die 'StateListDrawable' fyi –

+0

Vielen Dank! Das kam sehr praktisch! – inteist

Verwandte Themen