【问题标题】:How can I use VectorDrawable with the Android Toolbar?如何将 VectorDrawable 与 Android 工具栏一起使用?
【发布时间】:2016-06-19 04:48:43
【问题描述】:

在工具栏中使用新的 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。

【问题讨论】:

  • 你可以在运行时尝试 MenuItem.setIcon()
  • @vigilancer 您的评论让我走上了正确的道路,并且有效。用一个小sn-p做一个真正的答案,我会接受它作为答案。

标签: android android-toolbar android-vectordrawable


【解决方案1】:

事实证明这很容易。 说,你有矢量可绘制vd_trash_24dp

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

但是。作为all we know ;)

AppCompat 确实支持加载矢量可绘制对象 在另一个可绘制容器中引用,例如 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。但是谁需要那个 %)

【讨论】:

  • > 从 Android 支持库 23.3.0 开始,支持矢量可绘制对象只能通过 app:srcCompat 或 setImageResource() 加载。看起来在支持库的版本 23.3.0 中,您可以仅通过 app:srcCompat 和 setImageResource 加载 VectorDrawables。 Source
  • 应用在支持库 24.1.1 上不断崩溃
  • 这似乎在没有StateListDrawable fyi 的情况下现在可以工作(在 24.2.1 中验证)
  • 谢谢!这非常方便!
  • DiscDev,你一定是新手 :) 这只是其中之一。
猜你喜欢
  • 1970-01-01
  • 2019-01-12
  • 1970-01-01
  • 2013-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多