如何将可绘制集的背景/颜色更改为视图的背景?

时间:2017-12-26 07:57:15

标签: java android xml

我的drawables文件夹中有这个xml。

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <corners android:radius="10dp"/>
    <solid android:color="#ffffff"/>
</shape>

我基本上使用它来为任何视图设置圆角,我将其设置为背景。但我想知道的是如何保持该视图的颜色/背景色调动态。因为我可以说我有三个视图都需要圆角但都需要有不同的颜色,我必须创建三个不同的可绘制文件并分别为每个文件设置颜色。正如我在上面的文件中所做的那样。我尝试在原始视图上使用BackgroundTint,但它无法正常工作。

2 个答案:

答案 0 :(得分:5)

GradientDrawable background = (GradientDrawable) textView.getBackground();
background.setColor(getResources().getColor(R.color.some_color));

我认为您已将可绘制的形状应用于textView作为背景。

因此,您需要使用已设置背景的视图来获取背景。

答案 1 :(得分:2)

创建可绘制背景并设置视图背景:

private void setBackground(View v, int backgroundColor) {
    GradientDrawable shape = new GradientDrawable();
    shape.setShape(GradientDrawable.RECTANGLE);
    shape.setColor(backgroundColor);
    shape.setSize(width, height);
    shape.setCornerRadius(4.0f);
    v.setBackground(shape);
    v.setBackgroundDrawable(shape);
}