reales - manual programacion android
Cambio de color en una forma dentro de una lista de capas programáticamente (1)
Estoy tratando de cambiar programáticamente el color de selectable_kachel_shape . Aquí está el archivo 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>
Estoy llamando dentro de un Fragmento el siguiente código
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. ¿Por qué obtengo una NullPointerException en shape.setColor ?
2. ¿Cómo sería posible cambiar el color dentro de una forma, que está dentro de una lista de capas, programáticamente?
Ok, encontré la respuesta, solo tuve que poner la identificación de la forma dentro del elemento que no está en la forma 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>
Y luego puede cambiar el color de la forma que llama shape.setColor o el color del trazo que llama shape.set Stroke (strokeWidth, strokeColor)