2012-10-15 8 views
17

Ho una vista personalizzata che usa Paint e Canvas per disegnare oggetti. La mia domanda è come impostare:Come impostare paint.setColor (R.color.white)

int color = R.color.white; 
paint.setColor(color); 

dal mio /res/valuse/color.xml che comprende risorse come

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="white">#FFFFFF</color> 
    <color name="black">#000000</color> 
    ... 
</resources> 

risposta

39
int color = ContextCompat.getColor(context, R.color.white); 
paint.setColor(color); 

Il metodo setColor() prende un numero di colore come int valore, ma non un id risorsa che è anche un int.

+0

Perfettamente funzionante. –

+3

[Documentazione risorse] (http://developer.android.com/reference/android/content/res/Resources.html#getColor (int)) dice _Questo metodo è stato deprecato nel livello API 23_, vedere questa [risposta] (http : //stackoverflow.com/a/31590927/4281182). –

+1

D'accordo, questo è un avviso importante. –

10

Provare a utilizzare color.white:

paint.setColor(Color.white) 
+2

hmm ... sembra che questo non risponda alla domanda (almeno non come la capisco :-) - che riguarda come accedere a un colore personalizzato dichiarato nelle risorse (rispetto a un colore predefinito) – kleopatra

7

prima ottenere il colore

int color = context.getResources().getColor(R.color.id); // old 

è deprecato ora, utilizzare questo invece

int color = ContextCompat.getColor(context, R.color.your_color); // new 

set di colori

paint.setColor(color); 
+1

Grazie tu! Mi ha salvato da ore di ricerche sul Web che si occupano di problemi di compatibilità API qui. – Mitselplik