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

标签 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。

最佳答案

事实证明这很容易。 说,你有矢量可绘制 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() 设置可绘制对象。但是谁需要那个 %)

关于android - 如何将 VectorDrawable 与 Android 工具栏一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35813199/

相关文章:

Android 波纹按钮不起作用

android - 不要在 Android 工具栏上显示后退按钮

android - 如何使用 minSdkVersion 21 从矢量可绘制启动器图标生成 png?

java - 如何在 GridView 中添加切换按钮?

android - 无法解析符号 'getBoolean'

Android 兼容包和 getLoaderManager()

android - 如何在 Pre-Lollipop 版本中更改工具栏文本颜色

android - 如何使用 CollapsingToolbarLayout 只有 2 个位置,滚动结束后展开和折叠

android - 我可以像使用 9 补丁一样使用矢量可绘制对象吗?

android - 在 API < 21 上更新 build.gradle 后停止使用矢量绘图的项目