361 Stimmen

Wie erhalte ich eine Farbe aus einem hexadezimalen Farbstring?

Ich möchte eine Farbe aus einer Hexa-Zeichenkette verwenden, wie z. B. "#FFFF0000" um (z. B.) die Hintergrundfarbe eines Layouts zu ändern. Color.HSVToColor sieht wie ein Gewinner aus, aber es braucht einen float[] als Parameter.

Bin ich der Lösung überhaupt näher gekommen?

671voto

jethro Punkte 17057

試してみる Color Klasse Methode:

public static int parseColor (String colorString)

En Android-Dokumentation :

Unterstützte Formate sind: #RRGGBB #AARRGGBB 'rot', 'blau', 'grün', 'schwarz', 'weiß', 'grau', 'cyan', 'magenta', 'gelb', 'hellgrau', 'dunkelgrau'

AndroidX: String.toColorInt()

289voto

invisbo Punkte 3349

Versuchen Sie es:

myLayout.setBackgroundColor(Color.parseColor("#636161"));

59voto

Suragch Punkte 420096

Diese Frage taucht bei einer Reihe von Suchanfragen im Zusammenhang mit hexadezimalen Farben auf, so dass ich hier eine Zusammenfassung hinzufügen werde.

Farbe von int

Hex-Farben haben die Form RRGGBB o AARRGGBB (Alpha, Rot, Grün, Blau). Meiner Erfahrung nach wird bei der Verwendung eines int direkt zu verwenden, müssen Sie die vollständige AARRGGBB Form. Wenn Sie nur die RRGGBB Form, dann setzen Sie einfach das Präfix FF um den Alpha-Wert (Transparenz) vollständig undurchsichtig zu machen. Hier ist, wie Sie es in Code setzen würde. verwenden 0x am Anfang bedeutet, dass es sich um eine Hexadezimalzahl und nicht um die Basis 10 handelt.

int myColor = 0xFF3F51B5;
myView.setBackgroundColor(myColor);

Farbe von String

Wie andere bereits erwähnt haben, können Sie Color.parseColor so

int myColor = Color.parseColor("#3F51B5");
myView.setBackgroundColor(myColor);

Beachten Sie, dass der String mit einem # . Beide RRGGBB et AARRGGBB Formate werden unterstützt.

Farbe aus XML

Eigentlich sollten Sie Ihre Farben, wann immer möglich, aus XML beziehen. Dies ist die empfohlene Option, weil sie es viel einfacher macht, Farbänderungen in Ihrer Anwendung vorzunehmen. Wenn Sie viele Hex-Farben in Ihrem Code festlegen, ist es sehr mühsam, sie später zu ändern.

Android Material Design verfügt über Farbpaletten mit bereits konfigurierten Hex-Werten.

Diese Themenfarben werden in der gesamten Anwendung verwendet und sehen wie folgt aus:

farben.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <color name="primary">#3F51B5</color>
  <color name="primary_dark">#303F9F</color>
  <color name="primary_light">#C5CAE9</color>
  <color name="accent">#FF4081</color>
  <color name="primary_text">#212121</color>
  <color name="secondary_text">#757575</color>
  <color name="icons">#FFFFFF</color>
  <color name="divider">#BDBDBD</color>
</resources>

Wenn Sie zusätzliche Farben benötigen, empfiehlt es sich, Ihre Farbe in zwei Schritten in xml zu definieren. Benennen Sie zunächst die Farbe mit dem Hex-Wert und dann eine Komponente Ihrer Anwendung, die eine bestimmte Farbe erhalten soll. So lassen sich die Farben später leicht anpassen. Nochmals, dies ist in farben.xml .

<color name="orange">#fff3632b</color>
<color name="my_view_background_color">@color/orange</color>

Wenn Sie dann die Farbe im Code einstellen wollen, gehen Sie wie folgt vor:

int myColor = ContextCompat.getColor(context, R.color.my_view_background_color);    
myView.setBackgroundColor(myColor);

Android Vordefinierte Farben

Die Klasse Color verfügt über eine Reihe von vordefinierten Farbkonstanten. Sie können sie wie folgt verwenden.

int myColor = Color.BLUE;
myView.setBackgroundColor(myColor);

Andere Farben sind

  • Color.BLACK
  • Color.BLUE
  • Color.CYAN
  • Color.DKGRAY
  • Color.GRAY
  • Color.GREEN
  • Color.LTGRAY
  • Color.MAGENTA
  • Color.RED
  • Color.TRANSPARENT
  • Color.WHITE
  • Color.YELLOW

Anmerkungen

24voto

700 Software Punkte 80959

Konvertieren Sie diese Zeichenkette in eine int Farbe, die verwendet werden kann in setBackgroundColor et setTextColor

String string = "#FFFF0000";
int color = Integer.parseInt(string.replaceFirst("^#",""), 16);

Die 16 bedeutet, dass es sich um eine hexadezimale Zahl handelt und nicht um die üblichen 0-9. Das Ergebnis sollte dasselbe sein wie

int color = 0xFFFF0000;

16voto

Patricia Heimfarth Punkte 2732

Es ist

int color =  Color.parseColor("colorstring");

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X