2016-03-05 27 views
20

在工具欄中使用新的VectorDrawable的正確方法是什麼?如何在Android工具欄中使用VectorDrawable?

我嘗試使用app:srcCompat元素,如下圖所示,但沒有顯示出來。

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

我對JB(16)使用android.support.v7.widget.Toolbar我自己的工具欄佈局和Android支持庫v23.2。

+0

你可以嘗試在運行時MenuItem.setIcon() – vigilancer

+0

@vigilancer你的評論讓我在正確的軌道上,它的工作原理。用一小段代碼做出真正的答案,我會接受它作爲答案。 – vwrynn

回答

27

原來這很容易。說,你有矢量繪製vd_trash_24dp

描述MenuItem無法直接使用android:icon來處理VectorDrawable。這似乎也忽略app:srcCompat

但是。作爲all we know;)

程序兼容性不支持載荷向量繪圖資源,當他們 在另一個繪製容器引用如StateListDrawable, InsetDrawable,LayerDrawable,LevelListDrawable和RotateDrawable

讓我們試試吧,應該我們?

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

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

街頭魔術確實如此。

是的,可以試着在運行時設置爲MenuItem.setIcon()。但誰需要這個%)

+0

應用程序不斷崩潰支持庫24.1.1 – PYPL

+4

這似乎現在正在工作(在24.2.1驗證)沒有'StateListDrawable' fyi –

+0

謝謝!這非常方便! – inteist