我有一个像这样的向量
<vector
xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:pathData="M8,8m-8,0a8,8 0,1 1,16 0a8,8 0,1 1,-16 0"
android:fillColor="#1c1c1c" />
<path
android:pathData="m6.7,12 l-3.7,-3.3 1.3,-1.5 2.3,2 4.9,-5.3 1.5,1.3z"
android:fillColor="#fff" />
</vector>
默认情况下看起来像这样:
我想改变颜色的圆圈编程(基本上是第一个路径的fillColor),并保持白色的刻度。
我试图改变可绘制的颜色(通过使用marker.setTint(tintColor)
和marker.setTintMode(PorterDuff.Mode.XOR)
或任何其他tintMode的变体),但无论我选择什么或尝试什么tintMode组合,我都无法改变圆圈的颜色。
改变蜱虫的颜色,或者应用正确的颜色,但随后也显示载体的形状(基本上是正方形)。
3条答案
按热度按时间j9per5c41#
您可以通过更改第一个路径的
fillColor
属性来创建两个不同版本的drawable,并根据您的条件使用其中一个。例如,创建一个
check_primary.xml
:和
check_error.xml
,其中:然后根据需要在代码中使用它们:
xt0899hw2#
gcuhipw93#
在本例中,将R.drawable.your_drawable替换为可绘制对象的资源ID,将R.color.your_color替换为要应用的颜色的资源ID。
getDrawable()方法从资源中检索原始的可绘制对象。然后,我们使用DrawableCompat.wrap()创建一个名为colorDrawable的新可绘制对象,以确保与旧Android版本的兼容性。调用mutate()方法来创建可绘制对象的一个新示例,以便任何后续修改都不会影响具有相同资源的其他可绘制对象。
最后,我们使用来自DrawableCompat的setTint()设置所需的颜色,传递colorDrawable和所需的颜色。
然后可以使用setImageDrawable()方法将修改后的drawable设置为ImageView或任何其他视图。
通过执行以下步骤,您可以以编程方式更改Android中可绘制对象路径的颜色。