我可以在ActionBar菜单图标中使用矢量绘图文件吗?

12

我可以在ActionBar菜单图标中使用向量文件吗?

现在的appCompat支持API大于8的矢量文件。我可以在ActionBar菜单中使用矢量可绘制对象吗?

4个回答

6

如果您以编程方式设置菜单图标,则仅适用于 Android < 21。

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.mymenu, menu);
        MenuItem cancelMenuItem = menu.getItem(0);

        VectorDrawableCompat vectorDrawableCompat = VectorDrawableCompat.create(getResources(), R.drawable.vector_drawable_delete, null);
        cancelMenuItem.setIcon(vectorDrawableCompat);

        return super.onCreateOptionsMenu(menu);
    }

3
在应用程序或活动中添加 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true)

你也可以在gradle.build中这样做。只需在android{ }标签内添加一行代码vectorDrawables.useSupportLibrary = true。更多信息请参见点击这里 - Dominikus K.
使用 vectorDrawables.useSupportLibrary = true 对我来说不起作用,尽管我正在使用 gradle 插件 3.0.1,但是 AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) 却完美地工作。 - Vinh Nguyen

0

对我来说它很好用。矢量图标可用于操作栏。


13
你能分享一下在 Android 版本低于 21 上是如何做的吗?tint/fillcolor 对我不起作用。 - Rémy DAVID
这是我成功运行它的方法,确保在显示矢量图之前调用AppCompatDelegate.setCompatVectorFromResourcesEnabled(true) - JoseF

-3
在你的 XML 文件中使用 ->
`app:icon="@drawable/vector_name_available"``

使用预先建议的 Android XML 的替代方案

android:icon="@drawable/????????????

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接