引用具有修改后透明度的颜色资源

20

在xml资源文件中是否有一种方法可以引用具有修改alpha值的颜色资源? 我正在寻找的是像这样的东西:

<!-- base color -->
<color name="myColor">#19AEE0</color>
<!-- redefined color with alpha - not particularly elegant -->
<color name="myColor2">#8019AEE0</color>
<!-- referenced color with alpha -->
<color name="myColorTransparent" alpha="0.5">@color/myColor</color>

我知道这可以很容易地通过编程来实现,但采用声明性的方式会更清晰、更易读,尤其在为同一种颜色定义多个透明度值时。

1个回答

6

在寻找如何将颜色强调为涟漪可绘制颜色时,我发现可以借助 <selector> 来完成。

如果不存在 color 资源文件夹,请添加一个,并在其中创建一个新文件,其基本名称将用作颜色资源。例如,将其命名为 my_color_transparent.xml。然后,粘贴以下内容。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:color="@color/myColor"
        android:alpha=".5" />
</selector>

此时,您可以像values文件夹中的颜色一样通过XML或编程方式将其引用为@color/my_color_transparent

注意: android:alpha属性作为掩码应用,因此透明度乘以通过android:color属性指定的颜色的透明度。例如,如果@color/myColor不透明度为20%,并且android:alpha.5,则@color/my_color_transparent的不透明度将为10%。


此解决方案仅适用于API 23及以上版本 https://developer.android.com/reference/android/content/res/ColorStateList#item-attributes - akaMahesh

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