如何将 VectorDrawable 与 Android 工具栏一起使用?
How can I use VectorDrawable with the Android Toolbar?
在工具栏中使用新的 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>
我有自己的工具栏布局,使用 android.support.v7.widget.Toolbar
和 Android JB (16) 上的支持库 v23.2。
事实证明这很容易。
比如说,你有矢量可绘制对象 vd_trash_24dp
.
描述 MenuItem 不能直接用 android:icon
寻址 VectorDrawable。似乎也忽略了 app:srcCompat
。
但是。作为 all we know ;)
AppCompat does support loading vector drawables when they are
referenced in another drawable container such as a StateListDrawable,
InsetDrawable, LayerDrawable, LevelListDrawable, and 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()
设置可绘制对象。但是谁需要那个 %)
在工具栏中使用新的 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>
我有自己的工具栏布局,使用 android.support.v7.widget.Toolbar
和 Android JB (16) 上的支持库 v23.2。
事实证明这很容易。
比如说,你有矢量可绘制对象 vd_trash_24dp
.
描述 MenuItem 不能直接用 android:icon
寻址 VectorDrawable。似乎也忽略了 app:srcCompat
。
但是。作为 all we know ;)
AppCompat does support loading vector drawables when they are referenced in another drawable container such as a StateListDrawable, InsetDrawable, LayerDrawable, LevelListDrawable, and 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()
设置可绘制对象。但是谁需要那个 %)