Je dispose d'un tableau que j'utilise comme arrière-plan pour un LinearLayout. Je voudrais changer la couleur de cette forme en cours d'exécution. J'ai essayé d'utiliser plusieurs méthodes mais aucune ne fonctionne.
J'ai suivi l'approche décrite ici : http://www.anddev.org/Android-2d-3d-graphics-opengl-problems-f55/change-shape-drawable-solid-color-t16798.html
Mais j'ai le même problème... il ne se plante pas... mais la couleur ne change pas !
<?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>
Un extrait de code :
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();
Un indice ? J'ai passé toute la journée à chercher sur Google... et ça devient assez ennuyeux...
UPDATE :
Quand j'essaie de faire la même chose avec ce Shape :
<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>
La couleur vire au noir... ce qui me fait dire qu'elle peut être changée...
0 votes
Juste une supposition. Le Drawable n'est pas mutable, donc vous devez créer une copie, et muter celle-ci.
0 votes
Pourquoi le deuxième exemple devient-il noir ?! :-S
0 votes
Quelle est la couleur que vous avez choisie ? Le noir ?
0 votes
Non. Jaune. Une chose que j'ai remarquée, c'est que la couleur que je passe est RGB et qu'elle attend ARGB. La couleur que j'utilise est une analyse syntaxique de la chaîne #RRGGBB.
0 votes
Dans ce cas, utilisez l'opérateur binaire OU de votre nombre analysé et 0xFF000000.
0 votes
Je n'ai pas réussi jusqu'à présent. J'utilise maintenant un nouveau Shape créé dans le runtime. Mais ce n'est pas la solution que je recherchais. Changer la couleur actuelle est ce que je veux vraiment
0 votes
Je pense que toutes les réponses données ici changent la couleur du fond, mais pas celle de l'image. Ai-je raison ? Quelqu'un peut-il me le dire ? J'ai essayé toutes les solutions ici et aussi sur les mêmes questions sur stackoverflow, mais elles ne changent que la couleur de fond dans tous les cas. Je pense donc que nous ne pouvons changer que la couleur de l'arrière-plan, mais pas celle des images. Est-ce que j'ai raison ?