selectable_kachel_shapeの色をプログラムで変更しようとしています。 xmlファイルは次のとおりです。
kachel_ticked_style.xml
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item>
<shape
Android:id="@+id/selectable_kachel_shape"
Android:shape="rectangle" >
<stroke
Android:width="5dp"
Android:color="@color/headrbar_color" />
</shape>
</item>
<item>
<rotate
Android:fromDegrees="45"
Android:pivotX="120%"
Android:pivotY="100%"
Android:toDegrees="45" >
<shape Android:shape="line" >
<stroke
Android:width="40dp"
Android:color="@color/headrbar_color" />
</shape>
</rotate>
</item>
<item
Android:right="5dp"
Android:top="5dp">
<bitmap
Android:gravity="top|right"
Android:src="@drawable/selectable_tiles_check" />
</item>
</layer-list>
フラグメント内で次のコードを呼び出しています
LayerDrawable layers = (LayerDrawable) this.getActivity().getResources().getDrawable(R.drawable.kachel_ticked_style);
GradientDrawable shape = (GradientDrawable) (layers.findDrawableByLayerId(R.id.selectable_kachel_shape));
shape.setColor(this.getActivity().getResources().getColor(Android.R.color.background_dark);
1. shape.setColorでNullPointerExceptionが発生するのはなぜですか?
2.プログラムで、図形内、つまりレイヤーリスト内の色を変更するにはどうすればよいですか?
答えが見つかりました。図形ではなく、アイテム内に図形のIDを入力する必要がありましたkachel_ticked_style.xml:
<item
Android:id="@+id/selectable_kachel_shape">
<shape
Android:shape="rectangle" >
<stroke
Android:width="5dp"
Android:color="@color/headrbar_color" />
</shape>
</item>
次に、shape.setColorを呼び出す形状の色、またはshape.setStroke(strokeWidth、strokeColor)を呼び出すストロークの色のいずれかを変更できます。