【问题标题】:Change vector drawable color in item of layer-list更改图层列表项中的矢量可绘制颜色
【发布时间】:2021-06-28 16:50:55
【问题描述】:

我有以下可绘制的layer-list

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="oval">
            <solid android:color="@color/grey" />
            <size
                android:width="64dp"
                android:height="64dp" />
        </shape>
    </item>
    <item
        android:layout_gravity="center_vertical"
        android:width="36dp"
        android:height="36dp"
        android:drawable="@drawable/ic_android_black_24dp"
        android:gravity="center"
        android:tint="@color/red" />
</layer-list>

ic_android_black_24dp 是一个矢量可绘制对象。

我需要在 xml 中更改此可绘制对象的颜色(不是以编程方式),并且不创建具有不同颜色的副本。

我尝试了android:tintandroid:color&lt;shape&gt; 的不同方法。

有什么解决办法吗?

【问题讨论】:

    标签: android xml android-drawable android-vectordrawable


    【解决方案1】:

    从drawable中打开这个向量ic_android_black_24dp的文件,你会看到这样的行:

    <vector xmlns:android="http://schemas.android.com/apk/res/android"
            android:width="24dp"
            android:height="24dp"
            android:viewportWidth="24"
            android:viewportHeight="24">
    

    你需要添加这行代码android:tint="@color/someColor",这个向量的颜色会根据你的需要改变

    代码将是

    <vector xmlns:android="http://schemas.android.com/apk/res/android"
            android:width="24dp"
            android:height="24dp"
            android:viewportWidth="24"
            android:viewportHeight="24"
            android:tint="@color/someColor">
    

    【讨论】: