2012-12-12 12 views
28

Ich würde gerne wissen, wie man die Taste Farbe programmatisch einstellen? Ich habe codiert die folgenden aber nicht:android set button hintergrund programmatisch

Button11.setBackgroundColor(R.color.red); 

Dank !!

+2

welchen Effekt versuchen Sie zu bekommen? Ein einfaches rotes Rechteck ohne zusätzliche Effekte? Wenn nicht, werden Sie eine Art von Zeichen benötigen, um zu erreichen, was Sie nach, entweder ein PNG (9patch) oder etwas in xml definiert. Das System hat keine eingebaute Möglichkeit, eine Schaltfläche zu erstellen, die wie eine normale Schaltfläche aussieht, mit Ausnahme einer anderen Farbe. Sie müssen Ihre eigene Ressource bereitstellen, es sei denn, Sie suchen nach einem einfachen einfarbigen Rechteck. – FoamyGuy

+0

eigentlich was ich tue ist, dass aus einer Tabelle von 12 Tasten das Programm zufällig 6 von ihnen auswählt, um definierten Text zu füllen. Ich möchte, dass diese 6 Tasten in eine andere Farbe wechseln. In dieser Hinsicht kann es nicht im XML-Teil getan werden, sondern nur programmatisch. Ich habe bereits einige xml definiert (die erste nicht ausgewählte ist einfach grüne runde Farbe, wenn ausgewählt, ich wünsche, dass es einfach rote runde Farbe wird) Wenn auf diese Weise, kann es getan werden? – pearmak

+2

Richtig, aber Sie müssen entweder eine rote Schaltfläche Bild wie ein 9patch Png haben, oder Sie müssen eine rote Schaltfläche Form in Xml definieren. Wenn Sie einfach die Hintergrundfarbe in Rot ändern, erhalten Sie ein einfaches rotes Rechteck, das nicht wie eine normale Schaltfläche aussieht. – FoamyGuy

Antwort

60

R.color.red ist eine ID (die auch eine int ist), ist aber keine Farbe.

Verwenden Sie eine der folgenden Aktionen statt:

// 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)); 

Oder alternativ:

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

Oder für mehr pro Fähigkeiten:

Button11.setBackgroundColor(0xFFFF0000); // 0xAARRGGBB 
+0

Wie stelle ich verschiedene Farben für mehr als eine Schaltfläche, die programmgesteuert erstellt wird? – JUL2791

+2

Aber es löscht alle Arten, wie Grenzen oder abgerundete Ecken. Es stellt also tatsächlich die Farbe für den Knopfbereich ein, nicht die Tastenfarbe wie OP angefordert. –

+2

Beachten Sie, dass 'getColor()' jetzt veraltet ist. Verwenden Sie 'ContextCompat' http://StackOverflow.com/a/32149275/1358777 –

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

Legt die Hintergrundfarbe für diese Ansicht. Parameter: Farbe die Farbe des Hintergrunds

R.color.red ist eine Referenz, die bei der Kompilation in gen generiert wurde.

26

Alter Thread, aber etwas Neues gelernt, hoffe, das könnte jemandem helfen.

Wenn Sie die Hintergrundfarbe ändern möchten, aber andere Stile beibehalten möchten, dann hilft Ihnen das weiter unten.

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

' setColorFilter' legt nur einen Farbton auf den vorhandenen Hintergrund. Es wird keine neue Hintergrundfarbe festgelegt. –

+5

Wenn Sie die Schaltfläche für den erhöhten Materialstil verwenden, wird dies funktionieren. Nicht 'Button.setBackgroundColor()'. – fahmy

+1

Es ist 2017 jetzt und es ist immer noch sooo hässlich, diese ganze Reihe von Boilerplate zu schreiben, um die Farbe von Ressource zu setzen ... –

Verwandte Themen