2015-09-05 20 views
7

Ich versuche Color.parseColor() auf einer Farbressource zu verwenden:Get Farbe Ressource als String

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

ich das versucht habe, aber es gibt mir die Fehler Unbekannte Farbe:

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

Wie konvertiere ich die Farbressource korrekt in einen String?

Antwort

16

Ich glaube, Sie # verpasst

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

nice observation –

+3

'Integer.toHexString (ContextCompat.getColor (Kontext, R.color.redish)' mit den letzten Versionen funktionierte das für mich. –

+1

getColor ich verwarf ... [mehr] (http://stackoverflow.com/questions/31590714/getcolorint-id-veraltet-auf-android-6-0-Marshmallow-api-23) – LukTar

1

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

Versuchen Sie, diese

+1

'Erwartete Ressource von string' Fehlertyp: http://i.imgur.com/zbcdqhL.png – user5294977

+0

wieder Meine Antwort überprüfen ...... !! – koutuk

+0

Immer noch der Fehler. Was ist deine Farb-XML? http://i.imgur.com/R11rsUX.png – user5294977

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

'Kontext' muss da sein ... es ist in einem Adapter. – user5294977

+0

hinzugefügt .Check this –

+2

Das ist buchstäblich genau das, was ich in meiner Frage habe und es funktioniert nicht ... – user5294977

0

ich in Objekt (die anderen Felder) gespeichert, um eine Farbe bekam. Auch die Farben wurden in der XML-Datei (colors.xml) definiert.
So wollte ich die Hintergrundfarbe von Textview setzen. Ich habe es wie folgt:

...  
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)))); 

Wenn Sie den Code in Aktivität verwenden, können Sie die Verwendung von ‚Kontext‘ weglassen.

+0

Hier ist ein anderer Weg, es zu tun: http: //stackoverflow.com/questions/13388493/how-can-ich-convert-the-android-resources-int-zu-a-string-zB-android-r-string-c/43621406 # 43621406 – user2288580

2

Aktualisiert Antwort:

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

Dies funktionierte für mich, wenn die angenommene Antwort nicht . Vielen Dank! – nope4561759