如何重用drawable

时间:2015-10-01 17:49:24

标签: android xml

我有许多背景绘图,唯一不同的是边框的颜色或背景的颜色。

有没有办法定义一般的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。

1 个答案:

答案 0 :(得分:2)

这假定您想以编程方式执行此操作。如果您只需要更改背景和/或笔触颜色,可以采用以下方法:

  1. 获取对形状的引用

     GradientDrawable drawable = (GradientDrawable)context.getResources().getDrawable(R.drawable.shape_id)
    
  2. 改变颜色

     drawable.setColor(Color.RED)
    
  3. 要更改笔触颜色和宽度(请注意,您只能将它们一起更改,因此我建议保留一个带有笔划宽度的变量,以px为单位)

    drawable.setStroke(Util.dpToPx(context, 2), Color.YELLOW)