如何将VectorDrawable与Android工具栏一起使用?

时间:2016-03-05 10:53:30

标签: android android-toolbar android-vectordrawable

在工具栏中使用新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拥有自己的工具栏布局。

1 个答案:

答案 0 :(得分:33)

原来这很容易。 说,你有矢量drawable vd_trash_24dp

描述MenuItem无法直接使用android:icon寻址VectorDrawable。它似乎也忽略了app:srcCompat

但是。作为all we know;)

  

AppCompat确实支持加载矢量drawables   在另一个可绘制容器中引用,例如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()在运行时设置drawable。但谁需要那个%)