如何以编程方式填充xml中定义的矩形

时间:2012-05-13 11:17:34

标签: android

我有一个简单的Android项目,在xml中定义了一个矩形,但我找不到用纯色填充它的方法。

main.xml文件包含以下内容

<ImageView
    android:id="@+id/Smoke20"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignTop="@+id/editText2"
    android:layout_marginLeft="26dp"
    android:src="@drawable/zonebox" />

其中zonebox在res / drawable / zonebox.xml中定义如下

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 

android:shape="rectangle" >

<size
    android:width="80sp"
    android:height="20sp" />

<stroke
android:width="1dp"
android:color="#88888888" />

<!--  solid
    android:color="#0A0" />    
-->
</shape>

在我的代码中,我可以用例如更改矩形边界的颜色

之类的东西
int colourBox = getResources().getColor(R.color.fire2_fire_color);
View rectTest = findViewById(R.id.Smoke20);
rectTest.setBackgroundColor(colourBox);

但我不能在代码中复制在xml中如此容易完成的“solid”属性,如图所示。我显然是以错误的方式解决这个问题,但经过大量研究后,我仍处于黑暗中。

我已经看过如下获取xml资源,但这并没有提供一个合适的方法来填充矩形。

ShapeDrawable viewTest = (ShapeDrawable)getResources().getDrawable(R.id.Smoke20);

由于

1 个答案:

答案 0 :(得分:1)

迟到的回答但也许有帮助......我有一个类似的问题,有一个可绘制的形状。我试图访问我的shape-drawable,发现一个可绘制的形状是GradientDrawable。因此,如果您想获得访问权限,请尝试以下方法:

    GradientDrawable yourShape = (GradientDrawable)getResources().getDrawable(
            R.drawable.yourShape);