2011-03-12 8 views
43

Estoy tratando de establecer algunos colores generales para un programa que estoy escribiendo. Creé un archivo colors.xml y trato de referenciar directamente los colores del archivo layout.xml. Creo que estoy estoy haciendo esto correctamente sin embargo, me da el siguiente error:configuración textColor en TextView en diseño/main.xml archivo de diseño principal que no hace referencia al archivo colors.xml. (Quiere un #RRGGBB en lugar de @ color/text_color)

Color value '@colors/text_color' must start with # 

Aquí es mi res/valores/colors.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="background_color">#888888</color> 
    <color name="text_color">#00FFFF</color> 
</resources> 

Aquí está mi res/layout/principal. xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
<TextView 
    android:layout_width="fill_parent" 
    android:text="@string/hello" 
    android:layout_height="wrap_content" 
    android:id="@+id/TextView01" 
    android:textColor="@colors/text_color"/> 
</LinearLayout> 

miré algunas referencias sobre el sitio de desarrolladores de Android: More Resource Types : Color y encontré este código:

Ejemplo: archivo XML guardado en res/valores/colors.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <color name="opaque_red">#f00</color> 
    <color name="translucent_red">#80ff0000</color> 
</resources> 

Este código de aplicación recupera el recurso de color:

Resources res = getResources(); 
int color = res.getColor(R.color.opaque_red); 

Este XML disposición se aplica el color a un atributo:

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:textColor="@color/translucent_red" 
    android:text="Hello"/> 

Creo que mis dos archivos xml siguen este ejemplo bastante cerca, sin embargo, la única diferencia es que no he usado ningún código de aplicación para recuperar el recurso de color. No creo que esto sea necesario (pero es una diferencia). ¿Pensé que vería si alguien más tuviera problemas similares o una solución? o es esto un error?

Actualicé todos mis archivos android sdk (y Eclipse plugin) la semana pasada, así que creo que son los más recientes.

Respuesta

29

Después de experimentar en ese caso: android:textColor="@colors/text_color" está mal, ya que @color no depende del nombre de archivo. Puede asignarle un nombre al archivo de recursos foobar.xml; no importa, pero si ha definido algunos colores, puede acceder a ellos utilizando @color/some_color.

Actualización:

file location: res/values/colors.xml The filename is arbitrary. The element's name will be used as the resource ID. (Source)

15

Usted tiene un error en el código XML; debe ser:

android:textColor="@color/text_color" 

que es "@color" sin la 's'.

39

Una variación utilizando el código de color estándar simplemente:

android:textColor="#ff0000" 
2

Usted debe escribir el textcolor en XML como

android:textColor="@color/text_color" 

o

android:textColor="#FFFFFF" 
Cuestiones relacionadas