web-dev-qa-db-fra.com

Définir la couleur de fond par programme

J'essaie de définir la couleur d'arrière-plan par programme, mais lorsque je définis chacune de mes couleurs, l'arrière-plan est noir mais toutes les couleurs d'arrière-plan sont blanches, comme le thème de l'application.

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(color.white);

Pouvez-vous voir le code?

117
user3274646

Je n'ai pas compris votre question ... qu'entendez-vous par "quand je règle chacune de mes couleurs"? essayez ceci (modifier: "#fffff" dans la réponse originale remplacé par "#ffffff"

  yourView.setBackgroundColor(Color.parseColor("#ffffff"));
153

vous devez utiliser la méthode getResources (), essayez d'utiliser le code suivant

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(getResources().getColor(color.white)); 

Edit ::

getResources.getColor () est obsolète, utilisez comme ci-dessous

 root.setBackgroundColor(ContextCompat.getColor(this, R.color.white)); 

Vous pouvez utiliser

 root.setBackgroundColor(0xFFFFFFFF);

ou

 root.setBackgroundColor(Color.parseColor("#ffffff"));
35
Piyush

Les réponses précédentes sont maintenant obsolètes, vous devez utiliser ContextCompat.getColor pour récupérer la couleur correctement:

root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
30
Yoann Hercouet

Si vous souhaitez uniquement utiliser certaines des couleurs Android prédéfinies, vous pouvez utiliser Color.COLOR (où COLOR est BLACK, WHITE, RED, etc.):

myView.setBackgroundColor(Color.GREEN);

Sinon, vous pouvez faire comme d'autres l'ont suggéré avec

myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));

Je ne recommande pas d'utiliser directement une couleur hexadécimale. Vous devez conserver toutes vos couleurs personnalisées dans colors.xml.

11
Suragch

Cela doit fonctionner:

vous devez utiliser getResources (). getColor (R.color.WHITE) pour obtenir la ressource de couleur, que vous devez ajouter dans le fichier de ressources colors.xml

View someView = findViewById(R.id.screen);

someView.setBackgroundColor(getResources().getColor(R.color.WHITE));
6
Hatim

Dans mon cas, cela ne changeait pas la couleur parce que j'étais définir la couleur dans ma ressource xml.

Après avoir supprimé la ligne qui a défini la couleur, cela a fonctionné parfaitement par programmation

Ceci est un exemple que j'ai fait dans un RecyclerView

final Drawable drawable = ContextCompat.getDrawable(mContext, R.drawable.ic_icon).mutate();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    holder.image.setBackground(drawable);
} else {
    holder.image.setBackgroundDrawable(drawable);
}
2
Jorge Casariego

Si vous enregistrez le code de couleur dans le fichier colors.xml qui se trouve sous le dossier de valeurs, vous devez appeler le texte suivant:

root.setBackgroundColor(getResources().getColor(R.color.name));

name signifie que vous déclarez dans la balise <color/>.

2
Hay Thi