webentwicklung-frage-antwort-db.com.de

Stellen Sie die Hintergrundfarbe programmgesteuert ein

Ich versuche, die Hintergrundfarbe programmgesteuert einzustellen, aber wenn ich jede meiner Farben einstelle, ist der Hintergrund schwarz, aber jeder Farbhintergrund ist weiß, wie das Anwendungsthema.

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

Kannst du den Code sehen?

117
user3274646

Ich habe deine Frage nicht verstanden ... was meinst du mit "wenn ich jede meiner Farben einstelle"? versuche dies (edit: "#fffff" in der ursprünglichen Antwort geändert zu "#ffffff"

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

sie müssen die Methode getResources () verwenden. Versuchen Sie, den folgenden Code zu verwenden

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

Edit ::

getResources.getColor () ist veraltet, verwenden Sie also wie unten

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

Sie können verwenden

 root.setBackgroundColor(0xFFFFFFFF);

oder

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

Die vorherigen Antworten sind jetzt veraltet. Sie müssen ContextCompat.getColor Verwenden, um die Farbe korrekt abzurufen:

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

Wenn Sie nur einige der vordefinierten Android Farben verwenden möchten, können Sie Color.COLOR (wobei COLORBLACK, WHITE, RED usw. ist):

myView.setBackgroundColor(Color.GREEN);

Ansonsten kannst du das machen, was andere mit vorgeschlagen haben

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

Ich empfehle nicht, eine Sechseckfarbe direkt zu verwenden. Sie sollten alle Ihre benutzerdefinierten Farben in colors.xml behalten.

11
Suragch

Das muss funktionieren:

sie müssen getResources (). getColor (R.color.WHITE) verwenden, um die Farbressource abzurufen, die Sie in der Ressourcendatei colors.xml hinzufügen müssen

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

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

In meinem Fall hat sich die Farbe nicht geändert, weil ich die Farbe in meiner XML-Ressource festgelegt habe.

Nachdem Sie die Zeile gelöscht haben, die die Farbe festgelegt hat, hat sie programmgesteuert einwandfrei funktioniert

Dies ist ein Beispiel, das ich in einer RecyclerView gemacht habe

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

Wenn Sie den Farbcode in der Datei colors.xml speichern, die sich im Ordner values ​​befindet, sollten Sie Folgendes aufrufen:

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

name bedeutet, dass Sie im <color/> Etikett.

2
Hay Thi