2012-05-13 13 views
2

xmlで定義された矩形の単純なAndroidプロジェクトがありますが、文法的にソリッドカラーで塗りつぶす方法が見つかりません。xmlで定義された矩形をプログラムで埋め込む方法

main.xmlファイルは、以下の

zoneboxが私のコードで

<?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> 

を次のように、私は、例えば変更することができRES /描画可能/ zonebox.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" /> 

を持っています

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

後期の答えが、多分私は描画可能な形状と同様の問題があった...のに役立ちます。私は自分のシェイプドロワブルにアクセスしようとしましたが、シェイプドロワブルがGradientDrawableであることがわかりました。アクセスしたい場合は、次のように試してみてください。

GradientDrawable yourShape = (GradientDrawable)getResources().getDrawable(
      R.drawable.yourShape); 
関連する問題