gpt4 book ai didi

android - 通过 XML 为 Android 矢量菜单图标着色

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:23:12 25 4
gpt4 key购买 nike

我阅读了解释 Android 中的 VectorDrawables 以及如何使用它们代替不同像素密度的 PNG 文件的答案和博客文章。

我看到有一个 android:tint XML 属性可以用在 ImageButton 和类似的 View 上,但是我希望能够对用作菜单项的矢量图标应用色调,因为您无法在菜单项上使用 android:tint

One blog post解释了可以像这样创建有色可绘制对象:

<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_action_something"
android:tint="@color/color_action_icons_tint"/>

上面的 XML 文件是 tinted drawable,通过 src 引用的 drawable 是原始矢量(黑色),tint 是图标的颜色被着色。

但是,上面的方法对我不起作用,出现以下错误:

android.content.res.Resources$NotFoundException: File res/drawable/ic_chevron_left_white_24dp.xml from drawable resource ID #0x7f02007e
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3735)
at android.content.res.Resources.loadDrawable(Resources.java:3603)
at android.content.res.Resources.getDrawable(Resources.java:1852)
at android.content.Context.getDrawable(Context.java:408)
at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:352)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:193)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:181)
at ...
Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: <bitmap> requires a valid src attribute
at android.graphics.drawable.BitmapDrawable.updateStateFromTypedArray(BitmapDrawable.java:761)
at android.graphics.drawable.BitmapDrawable.inflate(BitmapDrawable.java:726)
at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1150)
at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1063)
at android.content.res.Resources.loadDrawableForCookie(Resources.java:3719)
at android.content.res.Resources.loadDrawable(Resources.java:3603) 
at android.content.res.Resources.getDrawable(Resources.java:1852) 
at android.content.Context.getDrawable(Context.java:408) 
at android.support.v4.content.ContextCompatApi21.getDrawable(ContextCompatApi21.java:26) 
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:352) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:193) 
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:181) 
at ...

编辑:这是我的可绘制ic_chevron_left_white_24dp.xml:

<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_chevron_left_black_24dp"
android:tint="@color/white"/>

上面的文件和引用的文件都存在。


此外,通过上述,我的 IDE (Android Studio) 显示此警告:

Rendering Problems : requires a valid 'src' attribute

这让我想到了一个问题 - 如何为 XML 矢量可绘制菜单图标着色?

我知道我可以创建矢量的副本并将 fillColor 属性更改为我想要的颜色,但除此之外,有没有办法以非编程方式执行此操作?

最佳答案

目前这是不可能的。请考虑给这个 feature request 加注星标在 Android 问题跟踪器中。

关于android - 通过 XML 为 Android 矢量菜单图标着色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38328390/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com