以编程方式更改以XML格式定义的<shape>的颜色

时间:2015-07-18 16:20:25

标签: android xml

我不确定以编程方式更改我在xml中定义的颜色的最佳方法。假设我有以下形状元素:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"    android:shape="rectangle">
<solid android:color="#00FF7F"/>
</shape>

以及以下视图......

<View android:layout_width="200dp"
    android:layout_height="175dp"
    android:background="@drawable/rectangle"
    android:visibility="visible"
    android:id="@+id/rect4"
    android:layout_below="@+id/rect2"
    android:layout_toEndOf="@+id/rect1"
    android:layout_marginEnd="5dp"
    android:layout_marginBottom="5dp"/>

如何在程序中更改矩形/视图的颜色?任何建议都表示赞赏。

3 个答案:

答案 0 :(得分:1)

像这样访问它:

View v = findViewById(R.id.rect4);
v.setBackground(R.drawable.rectangle);

drawable 文件夹中存储名为 rectangle.xml 的xml文件,该文件

答案 1 :(得分:0)

试着吼叫。

GradientDrawable backgroundShape = (GradientDrawable)btn.getBackground();
backgroundShape.setColor(Color.BLACK);

答案 2 :(得分:0)

你的问题有点模糊。你需要设置许多不同的颜色,还是想在两种颜色之间切换?

例如,您可以定义另一个仅在颜色上有所不同的形状(或多个其他形状),并将不同的形状设置为视图。

但是,如果您只需要一个矩形,则可以直接将颜色设置为视图的背景。

或者您可以为不同的状态定义具有不同颜色的状态选择器。甚至可以定义自己的自定义状态。

但是,我不知道最适合您需求的是什么。