事实证明这很容易。说,你有矢量 drawable vd_trash_24dp
。
描述 MenuItem 不能直接使用 VectorDrawable 来处理android:icon
。好像也无视了app:srcCompat
。
但。据我们所知;)
AppCompat 支持在另一个可绘制容器(例如 StateListDrawable、InsetDrawable、LayerDrawable、LevelListDrawable 和 RotateDrawable)中引用矢量可绘制对象时加载它们
让我们尝试一下,好吗?
创建 StateListDrawablevd_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()
. 但是谁需要那个 %)