引用具有修改后的 alpha 的颜色资源
Referencing a color resource with modified alpha
有没有办法在 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>
我知道这可以通过编程方式轻松完成,但是在为相同颜色定义多个透明度值时,以声明方式进行会更清晰、更易读。
经过一番搜索将颜色重音设置为波纹可绘制对象的颜色后,我发现可以借助 <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>
此时,您可以通过 XML 或像往常一样以编程方式将其引用为 @color/my_color_transparent
,例如 values
文件夹中的颜色。
注意:
android:alpha
属性用作遮罩,因此 alpha 乘以通过 android:color
属性指定的颜色。例如,如果 @color/myColor
的不透明度为 20%,而 android:alpha
的不透明度为 .5
,则 @color/my_color_transparent
的不透明度将为 10%。
有没有办法在 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>
我知道这可以通过编程方式轻松完成,但是在为相同颜色定义多个透明度值时,以声明方式进行会更清晰、更易读。
经过一番搜索将颜色重音设置为波纹可绘制对象的颜色后,我发现可以借助 <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>
此时,您可以通过 XML 或像往常一样以编程方式将其引用为 @color/my_color_transparent
,例如 values
文件夹中的颜色。
注意:
android:alpha
属性用作遮罩,因此 alpha 乘以通过 android:color
属性指定的颜色。例如,如果 @color/myColor
的不透明度为 20%,而 android:alpha
的不透明度为 .5
,则 @color/my_color_transparent
的不透明度将为 10%。