2010-02-26 30 views
18

this article gợi ý bạn có thể sử dụng Color c = Color.decode("FF0096"); tuy nhiên điều này dễ hiểu ném một ngoại lệphong cách css chuỗi hex và 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) 

cách tốt nhất để chuyển đổi một String trong định dạng của "# FF0096" hoặc "FF0096 là gì "vào một màu sắc java awt?

Trả lời

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

hoặc

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

hoặc

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

Cảm ơn bạn loại thưa ông. – Boldbayar

8

Phương pháp Color.decode ném NumberFormatException nếu chuỗi chỉ định không thể được hiểu là một số thập phân, bát phân, hoặc hexidecimal nguyên

Các chuỗi "FF0096" wi thout tiền tố của 0 hoặc 0x sẽ được hiểu là đại diện cơ sở 10 không hoạt động.

+0

bạn sai khi nói rằng FF0096 bắt đầu bằng 0x không hoạt động. – pstanton

+0

@pstanton: Cảm ơn bạn đã chỉ ra..đó là lỗi đánh máy. Tôi đã sửa nó. – codaddict

+0

* 0 * tiền tố có nghĩa là bát phân và rất khó có ai thích điều đó để giải mã màu sắc – bestsss

1

Tôi đang tìm cách tương tự để thực hiện việc này trong Android. Vì lý do nào đó, tôi không thể tìm thấy Color.decode() vì vậy tôi đã tìm kiếm một giải pháp thay thế. Nếu bạn muốn sử dụng một chuỗi hex để đại diện cho một màu trong Android, bạn có thể làm như sau:

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

thêm tại Color#parseColor

Các vấn đề liên quan