2016-03-05 34 views
20

Jaka jest właściwa metoda korzystania z nowej funkcji VectorDrawable na pasku narzędzi?Jak mogę użyć VectorDrawable w pasku narzędzi Android?

Próbowałem użyć elementu app:srcCompat, jak pokazano poniżej, ale nic się nie pokazało.

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

Mam własny układ paska narzędzi przy użyciu android.support.v7.widget.Toolbar i v23.2 Android Biblioteka Pomoc na JB (16).

+0

możesz spróbować MenuItem.setIcon() w czasie wykonywania – vigilancer

+0

@vigilancer Twój komentarz postawił mnie na dobrej drodze i działa. Podaj prawdziwą odpowiedź za pomocą małego fragmentu, a przyjmuję to jako odpowiedź. – vwrynn

Odpowiedz

27

Okazuje się, że to całkiem proste. Powiedzmy, że można rysować wektorowo vd_trash_24dp.

Opis MenuItem nie można adresować VectorDrawable bezpośrednio za pomocą android:icon. Wydaje się również ignorować app:srcCompat.

Ale. Jak all we know;)

AppCompat obsługuje ładowanie wektor kanału alfa, gdy są odniesione w innym rozciągliwej pojemniku, takim jak StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable i RotateDrawable

Spróbujmy, powinien my?

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

niż

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

ulicznej magii rzeczywiście.

Tak, można spróbować ustawić opcję losowania w środowisku wykonawczym pod numerem MenuItem.setIcon(). Ale kto potrzebuje tego%)

+0

Aplikacja ciągle się zawiesza w bibliotece pomocy technicznej 24.1.1 – PYPL

+4

to działa teraz (sprawdzone w 24.2.1) bez 'StateListDrawable' fyi –

+0

Dzięki! To było bardzo przydatne! – inteist