2010-02-26 17 views
18

this article Eğer Color c = Color.decode("FF0096"); ancak bu anlaşılır bir istisnacss stil altıgen dizeleri ve 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) 

"# FF0096" veya "FF0096 biçiminde bir dize dönüştürme en iyi yolu nedir atar kullanabilirsiniz önerir "Bir java awt rengine mi?

cevap

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

veya

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

veya

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

Color#parseColor de size nazik bey ederiz: Android bir renk temsil edecek bir altıgen dizesi kullanmak istiyorsanız, aşağıdakileri yapabilirsiniz. – Boldbayar

8

Color.decode yöntem atar NumberFormatException belirli bir dizi, bir ondalık, sekizli veya onaltılık tamsayı

olarak yorumlanamaz halinde dize "FF0096" wi numaralı 0 ya da 0x numaralı önek, çalışmayan bir temel 10 gösterim olarak yorumlanacaktır.

+0

0x ile öneki FF0096 çalışmadığını söylemek yanlıştır. – pstanton

+0

@pstanton: İşaretlediğiniz için teşekkürler .. bir yazım hatası oldu. Onu düzelttim. – codaddict

+0

* 0 * önek sekizlik anlamına gelir ve herkesin renkleri çözmek için çok az ihtimal – bestsss

1

Android'de bunu yapmak için benzer bir yol arıyordum. Bazı nedenlerden dolayı, Color.decode()'u bulamadım, bu yüzden bir alternatif aradım.

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

Daha