2015-09-05 14 views
7

Tôi đang cố gắng sử dụng Color.parseColor() trên một nguồn tài nguyên màu:Nhận tài nguyên màu như chuỗi

<color name="redish">#FF0000</color> 

Tôi đã cố gắng này, nhưng nó mang lại cho tôi những Lỗi không xác định màu:

Color.parseColor(Integer.toHexString(context.getResources().getColor(R.color.redish))) 

Làm cách nào để chuyển đổi tài nguyên màu thành String đúng cách?

Trả lời

16

Tôi nghĩ rằng bạn bỏ lỡ #

Color.parseColor("#"+Integer.toHexString(ContextCompat.getColor(context, R.color.redish))) 
+1

quan sát tốt đẹp –

+3

'Integer.toHexString (ContextCompat.getColor (ngữ cảnh, R.color.redish)' với các phiên bản gần đây này làm việc cho tôi –

+1

getColor i deprecated ... [more] (http://stackoverflow.com/questions/31590714/getcolorint-id-deprecated-on-android-6-0-marshmallow-api-23) – LukTar

1

String colorString=getResources().getString(R.color.redish); 

Hãy thử điều này

+1

'Dự kiến ​​nguồn lực của loại lỗi chuỗi': http://i.imgur.com/zbcdqhL.png – user5294977

+0

Kiểm tra câu trả lời của tôi một lần nữa ...... !! – koutuk

+0

Vẫn gặp lỗi. XML màu của bạn là gì? http://i.imgur.com/R11rsUX.png – user5294977

2
context.getResources().getColor(R.color.redish)); 
+0

'context' cần ở đó ... nó nằm trong bộ chuyển đổi. – user5294977

+0

.Check this –

+2

Đó là nghĩa đen chính xác những gì tôi có trong câu hỏi của tôi và nó không hoạt động ... – user5294977

0

tôi bị một màu được lưu trữ trong đối tượng (có chứa các lĩnh vực khác). Ngoài ra các màu sắc được xác định trong tập tin xml (colors.xml).
Vì vậy, muốn đặt màu nền của chế độ xem văn bản. Tôi đã làm như sau:

...  
String color= res.colorName; // res is an object 
int c = context.getResources().getIdentifier(color,"color", context.getPackageName()); 
textView.setBackgroundColor(Color.parseColor("#" + Integer.toHexString(context.getResources().getColor(c)))); 

Nếu bạn đang sử dụng mã trong hoạt động, bạn có thể bỏ qua việc sử dụng 'ngữ cảnh'.

+0

Đây là một cách khác để thực hiện: http: //stackoverflow.com/questions/13388493/how-can-i-convert-the-android-resources-int-to-a-string-ví dụ-android-r-string-c/43621406 # 43621406 – user2288580

2

câu trả lời Cập nhật:

String colorHex = "#" + Integer.toHexString(ContextCompat.getColor(context, R.color.colorPrimary) & 0x00ffffff); 
+1

Điều này làm việc cho tôi khi câu trả lời được chấp nhận không . Cảm ơn! – nope4561759

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