Tengo un dibujable que uso como fondo para un LinearLayout. Me gustaría cambiar el color de esta forma en tiempo de ejecución. He intentado usar varios métodos ... pero ninguno funciona.Android: cambiar el color de forma en tiempo de ejecución
He seguido el enfoque descrito aquí: http://www.anddev.org/android-2d-3d-graphics-opengl-problems-f55/change-shape-drawable-solid-color-t16798.html
Pero tener el mismo problema ..., duerma accidentes .. pero el color no cambia!
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#00A6C1" />
<corners android:radius="@dimen/square_corners" />
</shape>
fragmento de código:
GradientDrawable drawable = (GradientDrawable) activity.getResources().getDrawable(R.drawable.blue_square_shape);
int color = ((Application) getApplication()).getColor();
drawable.setColor(color);
block.findViewById(R.id.blockSquare).setBackgroundDrawable(drawable);
findViewById(R.id.blockSquare).postInvalidate();
Alguna pista? Me he pasado todo el día buscando en Google ... Y cada vez es bastante molesto ...
ACTUALIZACIÓN:
Cuando trato de hacer lo mismo a esta forma:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/shape" android:shape="rectangle">
<gradient android:startColor="#1FBCCF" android:endColor="#06A4C1"
android:angle="270" />
<corners android:topLeftRadius="@dimen/footer_corners"
android:topRightRadius="@dimen/footer_corners" />
</shape>
El color se vuelve negro ... lo que supongo que dice que se puede cambiar ...
Just a guess. El Drawable no es mutable, por lo que debes crear una copia y mutar esa. – Kaj
¿Por qué entonces se vuelve negro en el segundo ejemplo? : -S – neteinstein
¿En qué color lo está configurando? ¿Negro? – Kaj