2010-02-26 3 views
18

this articleColor c = Color.decode("FF0096"); 그러나이 당연 예외CSS 스타일의 진수 문자열과 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"또는 "FF0096의 형식으로 문자열을 변환하는 가장 좋은 방법은 무엇입니까을 던져 ​​사용할 수 있습니다 제안 "자바 awt 컬러로?

답변

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

또는

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

또는

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

Color#parseColor 당신에게 어떤 선생님 감사합니다 당신은 안드로이드에서 색상을 표현하기 위해 16 진수 문자열을 사용하려면 다음을 수행 할 수 있습니다. – Boldbayar

8

Color.decode 방법 던지는 NumberFormatException 지정된 문자열은 소수, 진수 또는 16 진수 정수

로 해석 할 수없는 경우 문자열 "FF0096"wi의 접두어 0 또는 0x은 작동하지 않는 기본 10 표현으로 해석됩니다.

+0

0x 접두사가 붙은 FF0096이 작동하지 않는다고 말하는 것은 잘못입니다. – pstanton

+0

@pstanton : 지적 해 주셔서 고마워요. 오타였습니다. 나는 그것을 바로 잡았다. – codaddict

+0

* 0 * 접두어는 8 진수를 의미하며 누구나 색상을 디코딩하기를 원할 것입니다. – bestsss

1

나는 Android에서 이와 비슷한 방법을 찾고있었습니다. 웬일인지 Color.decode()을 찾을 수 없었기 때문에 대안을 찾았습니다.

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

관련 문제