2010-10-18 13 views
27

Quando guardo misc. Esercitazioni ed esempi su Android quando si tratta di specificare i colori molto spesso vedo costanti come @color/red o @color/black ecc. Per qualche strana ragione che non funziona MAI per me! Devo sempre specificare i colori usando la notazione "#RGB", #ARGB, ..., #AARRGGBB.File .xml Android: Perché i colori predefiniti non funzionano per me?

Non appena cerco di utilizzare una di quelle costanti mnemoniche come ad es. "@ Colore/rosso" Mi è toccato messaggi di errore come questi:

[...] C:\Users\mmo\Test\res\drawable\edit_text.xml:5: error: Error: No resource found that matches the given name (at 'drawable' with value '@color/orange'). 
[...] C:\Users\mmo\Test\res\drawable\myDrawable.xml:3: error: Error: No resource found that matches the given name (at 'drawable' with value '@color/black'). 
[...] C:\Users\mmo\Test\res\drawable\myDrawable.xml:4: error: Error: No resource found that matches the given name (at 'drawable' with value '@color/black'). 
[...] C:\Users\mmo\Test\res\drawable\myDrawable.xml:5: error: Error: No resource found that matches the given name (at 'drawable' with value '@color/green'). 
[...] C:\Users\mmo\Test\res\drawable\myDrawable.xml:6: error: Error: No resource found that matches the given name (at 'drawable' with value '@color/black'). 

Perché è così? Perché non posso usare queste costanti predefinite? Devo prefissarli con un nome di pacchetto (ho provato @android:color/red ma questo ha causato solo un errore diverso)? Devo specificare questi colori da solo? Se sì: come e dove? Qualche idea o suggerimento?

Michael

risposta

23

È aggiunto "colors.xml" alla cartella res/values ​​in cui sono definite queste costanti di colore?

+5

Ho creato un file di questo tipo nella mia app ora e ho definito un gruppo di colori di default lì e ora posso effettivamente usare tali colori con nome. Apparentemente tutti quegli esempi che ho visto presumevano l'esistenza di un tale file senza mai affermarlo esplicitamente. Così ho falsamente arrivato alla conclusione che questi valori erano predefiniti. – mmo

+0

Vedere http://stackoverflow.com/a/3964048/632951 anche – Pacerier

58

Se si desidera utilizzare i colori predefinito nella piattaforma Android, la sintassi è @android: Colore/bianco. "Android:" all'inizio indica che la risorsa non fa parte dell'applicazione.

+2

No, come ho già scritto sopra: non funziona, almeno non per me. C'è qualche impostazione speciale o "importazione" (o qualsiasi altra cosa) necessaria per farlo funzionare? – mmo

+13

In realtà, ho solo dovuto imparare, che questo funziona, ma a quanto pare sono definiti solo i "colori" @android: color/white e @android: color/black. Tutti gli altri che ho provato (come @android: color/red, @android: color/green, @android: color/blue, ecc.) Hanno prodotto errori. Molto strano! – mmo

+1

È strano solo se ti aspetti che questi colori siano definiti dalla piattaforma, ma non lo sono. Di solito se vedi un'app di esempio con @ color/che indica che il colore è stato definito nell'app stessa. –

4

Assicurarsi che il file XML colore è entro i valori cartella, non un colori cartella.

Quindi si dovrebbe avere ...

valori /colors.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <color name="red">#FF0000</color> 
</resources> 

e non questo ...

colore /colors.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <color name="red">#FF0000</color> 
</selector> 

Si noti che il tag è risorse, non selettore.

6

Il file XML di colore si trova all'interno della cartella dei valori in cui deve contenere valori di colore.con un tag di risorse.

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
<color name="green">#00ff00</color> 

+0

dovrebbe essere # 00ff00 John

+0

Non è necessario dichiarare lo spazio dei nomi 'xmlns' perché i file delle risorse Android non hanno bisogno il prefisso 'android:'. – Flawyte

0

Una parte importante di questo che nessun altro ha menzionato è che il riferimento al colore deve essere

@color/black 

ma file XML deve essere

colors.xml 

(nota plurale nel nome del file xml ma non plurale @color)

+4

- 1, ** No ** il nome file può essere qualsiasi cosa. Ciò che è importante è che il nome del tag deve essere 'color', ad es. ' # 00ff00' – Pacerier

3

stranamente Android non fornisce una lista decente di colori.E dico stranamente perché durante i miei 30 anni di carriera questa è la prima lingua che ho incontrato che non lo fa. E che nonostante ciò è costruito su Java che definisce i colori in tutte le sue librerie di base.

Quelli che vengono definiti hanno il prefisso in modo da non li troverete :) Per trovarli (se si utilizza Eclipse) andare al documento XML in cui è necessario il colore tipo android: background = "@ Android: colore/e fare uno spazio Ctrl Sulla mia versione (corrente come noi parlando) ottengo più di una dozzina per esempio:.. holo_orange_dark

quindi, l'uso che o si lamentano così Google risolve questo problema e io lo chiamo problema perché. non ha senso forzare tutti gli sviluppatori a descrivere manualmente tutti i colori e i valori

+0

"questa è la prima lingua che ho incontrato che non lo fa" - come si chiama "lingua"? –

+0

Sono d'accordo. Questo è il primo ambiente in cui ho lavorato che non ha colori predefiniti, ma definisce nero/bianco/trasparente. Questo è strano, sono d'accordo, ma apparentemente vero. Questo è il motivo per cui è fonte di confusione per le persone che sono in circolazione da molto tempo. Per peggiorare le cose, non c'è una vera descrizione che riesca a trovare nei documenti ufficiali. Hai solo bisogno di google in giro. Strano. – Mitch

Problemi correlati