2

xml で定義された四角形を含む単純な Android プロジェクトがありますが、プログラムで単色で塗りつぶす方法が見つかりません。

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で簡単に実行できる「ソリッド」属性をコードで複製することはできません。私は明らかにこれを間違った方法で行っていますが、かなりの調査の後、私はまだ暗闇の中にいます.

次のようにxmlリソースを取得することを検討しましたが、これも長方形を埋めるための適切な方法を提供していません。

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

ありがとう

4

1 に答える 1

1

遅い答えですが、役立つかもしれません...描画可能な形状で同様の問題がありました。シェイプ ドローアブルにアクセスしようとしたところ、シェイプ ドローアブルが GradientDrawable であることがわかりました。したがって、アクセスしたい場合は、これを試してください:

    GradientDrawable yourShape = (GradientDrawable)getResources().getDrawable(
            R.drawable.yourShape);
于 2012-10-19T19:46:57.127 に答える