7
votes

Changer la couleur de fond dans Android détruit l'apparence du widget?

J'ai remarqué que changer la couleur d'arrière-plan d'un widget Android () par programme:

myButton.setBackgroundColor(Color.BLUE);


0 commentaires

3 Réponses :


2
votes

Les coins arrondis, les effets d'ombre, etc. sont souvent accomplis dans Android en utilisant des images. Voir cette Documentation de développeur pour une explication de la manière dont cela fonctionne.

Un widget peut avoir une image d'image ou une couleur de couleur unie. Donc, en réglant la couleur d'arrière-plan, vous remplacez l'image d'arrière-plan. Si vous souhaitez modifier la couleur sans perdre tout le reste, vous devez modifier les fichiers image.


0 commentaires


0
votes

Depuis l'arrière-plan est un dessinable, vous pouvez modifier le digilable pour modifier la couleur:

myButton.getBackground().setColorFilter(Color.BLUE, PorterDuff.Mode.SRC_ATOP);


1 commentaires

Vous pourriez également avoir besoin d'invalider () afin de le forcer à redessiner.