2010-10-18 9 views
27

Cuando miro misc. Tutoriales y ejemplos de Android cuando se trata de especificar colores, a menudo veo constantes como @color/red o @color/black etc. en uso. ¡Por alguna extraña razón, NUNCA funciona para mí! Siempre necesito especificar colores usando la notación "#RGB", #ARGB, ..., #AARRGGBB.Archivos Android .xml: ¿Por qué los colores predefinidos no funcionan para mí?

Tan pronto como trato de usar cualquiera de esas constantes mnemotécnicas, como p. Ej. "@ color/red" Recibo mensajes de error como estos:

[...] 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'). 

¿Por qué es así? ¿Por qué no puedo usar estas constantes predefinidas? ¿Tengo que prefijarlos con algún nombre de paquete (probé @android:color/red pero eso solo causó un error diferente)? ¿Debo especificar estos colores yo mismo? Si es así: ¿cómo y dónde? Alguna idea o sugerencia?

Michael

Respuesta

23

¿Se ha agregado "colors.xml" a su carpeta res/values ​​donde se definen estas constantes de color?

+5

Creé un archivo así en mi aplicación ahora y definí un montón de color predeterminado allí y ahora puedo usar esos colores con nombre. Aparentemente, todos los ejemplos que he visto presuponen la existencia de un archivo de ese tipo sin haberlo declarado explícitamente. Por lo tanto, falsamente había llegado a la conclusión de que estos valores estaban predefinidos. – mmo

+0

Consulte http://stackoverflow.com/a/3964048/632951 también – Pacerier

58

Si desea utilizar los colores predefinidos en la plataforma Android, la sintaxis es @android: el color/blanco. El "android:" al principio indica que el recurso no es parte de su aplicación.

+2

No, como ya escribí arriba: eso no funciona, al menos no para yo. ¿Hay alguna configuración especial o "importación" (o lo que sea) necesaria para que esto funcione? – mmo

+13

En realidad, solo tuve que aprender, que esto SI funciona, pero aparentemente solo se definen los "colores" @android: color/blanco y @android: color/negro. Todos los demás que probé (como @android: color/rojo, @android: color/verde, @android: color/azul, etc.) arrojaron errores. ¡Muy raro! – mmo

+1

Es extraño si espera que la plataforma defina estos colores, pero no es así. Por lo general, si ve una aplicación de muestra con @color/eso significa que el color se definió en la propia aplicación. –

4

Asegúrese de que el archivo XML de color está dentro de los valores carpeta, no un colores carpeta.

lo que debe tener ...

valores /colors.xml

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

y no esta ...

de color /colors.xml

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

Tenga en cuenta que la etiqueta es recursos, no selector de.

6

El archivo XML de color se encuentra dentro de la carpeta de valores donde debe contener valores de color. Dentro de la etiqueta de recursos.

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

+0

debe ser # 00ff00 John

+0

No es necesario declarar el espacio de nombres 'xmlns' porque los archivos de recursos de Android no necesitan el prefijo 'android:'. – Flawyte

0

Una parte importante de esto que nadie más ha mencionado es que la referencia al color tiene que ser

@color/black 

pero el archivo XML tiene que ser

colors.xml 

(tenga en cuenta el plural en el nombre del archivo xml pero no el plural @color)

+4

- 1, ** No ** el nombre del archivo puede ser cualquier cosa. Lo que es importante es que el nombre de la etiqueta debe ser 'color', p. Ej. ' # 00ff00' – Pacerier

3

Extrañamente, Android no proporciona una lista decente de colores.Y digo de manera extraña porque durante mis 30 años de carrera este es el primer idioma que conocí que no hace eso. Y eso a pesar de que está construido sobre Java que define los colores en todas sus bibliotecas básicas.

Los que se definen llevan el prefijo para que no los encontrará :) Para encontrarlos (si se utiliza Eclipse) ir al documento XML donde se necesita el tipo androide de color : Fondo = "@ android: el color/y hacer un espacio Ctrl en mi versión (actual a medida que habla) consigo más de una docena por ejemplo:.. holo_orange_dark

por lo tanto, el uso que ni se quejó por lo que Google corrige este problema y lo llamo problema porque. no tiene sentido forzar a todos los desarrolladores a que describan manualmente todos los colores y valores.

+0

"este es el primer idioma que conocí que no funciona" - ¿cómo se llama "idioma"? –

+0

Estoy de acuerdo. Este es el primer entorno en el que he trabajado que no tenía colores predefinidos pero define negro/blanco/transparente. Esto es extraño, estoy de acuerdo, pero aparentemente cierto. Es por eso que es confuso para las personas que han existido por mucho tiempo. Para empeorar las cosas, no hay una buena descripción que pueda encontrar en los documentos oficiales. Solo necesitas buscar en Google. Extraño. – Mitch

Cuestiones relacionadas