以编程方式向setStroke()添加不透明度

时间:2018-11-08 11:05:20

标签: android alpha

我正在尝试使用以下方式将不透明度设置为“边框颜色”:

d.setStroke(5 , Color.parseColor("#4A000000"))

我得到的结果是边界为50%的深色和50%的不透明度。

如何使它们像普通的背景色ColorUtils.setAlphaComponent(color, 100)一样融合?

1 个答案:

答案 0 :(得分:0)

您可以使用setStroke(),第二个参数是ColorStateList

ColorStateList中的每个项目都必须定义一个android:color属性,如下所示:

<item android:state_enabled="false"
         android:color="?android:attr/colorAccent"
         android:alpha="0.5" />  //use this xml attribute to set opacity.

下面是一个完整的ColorStateList示例:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true"
           android:color="@color/sample_focused" />
   <item android:state_pressed="true"
           android:state_enabled="false"
           android:color="@color/sample_disabled_pressed" />
   <item android:state_enabled="false"
           android:color="@color/sample_disabled_not_pressed" />
   <item android:color="@color/sample_default" 
           android:alpha="0.5"/>
 </selector>

在创建ColorStateList资源xml之后,在setStroke()方法中使用它。