2010-02-26 12 views
18

this article schlägt vor, können Sie Color c = Color.decode("FF0096"); jedoch verwenden diese verständlicherweise eine AusnahmeCSS Stil Hexstring und Color.decode

Caused by: java.lang.NumberFormatException: For input string: "FF0096" 
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) 
    at java.lang.Integer.parseInt(Integer.java:449) 
    at java.lang.Integer.valueOf(Integer.java:528) 
    at java.lang.Integer.decode(Integer.java:958) 
    at java.awt.Color.decode(Color.java:707) 

wirft Was ist der beste Weg, um einen String im Format „# FF0096“ der Umwandlung oder „FF0096 "in eine java awt Color?

Antwort

38
Color c = Color.decode("0xFF0096"); 

oder

Color c = Color.decode("#FF0096"); 

oder

Color c = new Color(0xFF0096); 
+0

Danke Art Sir. – Boldbayar

8

Die Color.decode Methode löst das NumberFormatException wenn die angegebene Zeichenfolge nicht als Dezimalzahl, oktal interpretiert werden, oder hexadezimale ganzzahlige

The Zeichenfolge "FF0096" wi thout das Präfix 0 oder 0x wird als eine Basis 10 Darstellung interpretiert, die nicht funktioniert.

+0

Sie sind falsch zu sagen, dass FF0096 Präfix 0x nicht funktioniert. – pstanton

+0

@pstanton: Danke für das Hinweis..es war ein Tippfehler. Ich habe es korrigiert. – codaddict

+0

* 0 * Präfix bedeutet oktal und es ist sehr unwahrscheinlich, dass jemand das zum Entschlüsseln von Farben möchte – bestsss

1

Ich suchte nach einer ähnlichen Möglichkeit, dies in Android zu tun. Aus irgendeinem Grund konnte ich Color.decode() nicht finden, also suchte ich nach einer Alternative. Wenn Sie einen Hex-String verwenden möchten, um eine Farbe im Android darzustellen, können Sie wie folgt vorgehen:

String hexColor = "#142b44"; 
View row = findViewById(R.id.row); 
int color = Color.parseColor(hexColor); 
row0.setBackgroundColor(color); 

Mehr auf Color#parseColor