我有许多背景绘图,唯一不同的是边框的颜色或背景的颜色。
有没有办法定义一般的drawable,然后添加(或更改)我需要的属性。
例如,这里是一个矩形的可绘制
XML文件
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="@dimen/radius_small"/>
<solid android:color="@color/simple_black" />
<stroke android:width="2dip" android:color="@color/simple_white" />
<padding
android:left="@dimen/two_dp"
android:right="@dimen/two_dp"/>
</shape>
我希望更改纯色或笔触颜色,而不是为每个颜色创建单独的drawable。
答案 0 :(得分:2)
这假定您想以编程方式执行此操作。如果您只需要更改背景和/或笔触颜色,可以采用以下方法:
获取对形状的引用
GradientDrawable drawable = (GradientDrawable)context.getResources().getDrawable(R.drawable.shape_id)
改变颜色
drawable.setColor(Color.RED)
要更改笔触颜色和宽度(请注意,您只能将它们一起更改,因此我建议保留一个带有笔划宽度的变量,以px为单位)
drawable.setStroke(Util.dpToPx(context, 2), Color.YELLOW)