web-dev-qa-db-fra.com

android définir le fond du bouton par programmation

Je voudrais savoir comment définir la couleur du bouton par programme?

Button11.setBackgroundColor(R.color.red);

Merci!!

31
pearmak

R.color.red est un identifiant (qui est aussi une int), mais n'est pas une couleur.

Utilisez plutôt l'un des éléments suivants:

// If you're in an activity:
Button11.setBackgroundColor(getResources().getColor(R.color.red));
// OR, if you're not: 
Button11.setBackgroundColor(Button11.getContext().getResources().getColor(R.color.red));

Ou bien:

Button11.setBackgroundColor(Color.RED); // From Android.graphics.Color

Ou, pour plus de compétences professionnelles:

Button11.setBackgroundColor(0xFFFF0000); // 0xAARRGGBB
68
Eric

Vieux fil, mais appris quelque chose de nouveau, espérons que cela pourra aider quelqu'un.

Si vous souhaitez modifier la couleur d'arrière-plan tout en conservant d'autres styles, la procédure ci-dessous peut vous aider.

button.getBackground().setColorFilter(ContextCompat.getColor(this, R.color.colorAccent), PorterDuff.Mode.MULTIPLY);
37
sojin

Vous pouvez définir la couleur souhaitée sur le bouton par programme, comme suit:

Button11.setBackgroundColor(Android.Graphics.Color.parseColor("#738b28"));

Aussi, vous pouvez donner la couleur du texte pour un bouton comme:

Button11.setTextColor(Android.Graphics.Color.parseColor("#FFFFFF"));
1
Deepya

Pour ne pas changer la taille du bouton lors du réglage de la couleur de fond:

button.getBackground().setColorFilter(button.getContext().getResources().getColor(R.color.colorAccent), PorterDuff.Mode.MULTIPLY);

cela n'a pas changé la taille du bouton et fonctionne également avec les anciennes versions d'Android.

0
Saadat

J'ai constaté qu'Android Studio m'avertit que getColor() est obsolète lorsque j'essaie de le faire:

Button11.setBackgroundColor(getResources().getColor(R.color.red))

J'ai donc trouvé que la méthode ci-dessous était la solution simple et actualisée:

Button11.setBackgroundColor(ContextCompat.getColor(context, R.color.red))

Vous voulez éviter de coder en dur dans l'argument de couleur, car il est considéré comme un style de code incorrect.

Edit: Après avoir utilisé setBackgroundColor() avec mon propre bouton, j'ai constaté que le remplissage du bouton interne s’est développé. Je ne pouvais pas trouver le moyen de le changer pour que la hauteur et la largeur soient définies sur "wrap_content". Peut-être que c'est un bug.

Source: https://stackoverflow.com/a/32202256/6030520

0
Jamie
button.setBackgroundColor(getResources().getColor(R.color.red);

Définit la couleur de fond pour cette vue . Paramètres: colorera la couleur de fond

R.color.red est une référence générée lors de la compilation dans gen. 

0
zicos22