Установка textColor в TextView в макете /main.xml основной файл макета, не ссылающийся на файл colors.xml. (Он хочет #RRGGBB вместо @color/text_color)

Я пытаюсь установить некоторые общие цвета для программы, которую я пишу. Я создал файл colors.xml и пытаюсь напрямую ссылаться на цвета из файла layout.xml. Я считаю, что делаю это правильно, но это дает мне следующую ошибку:

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

Вот мои res/values ​​/colors.xml

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

Вот мой res/layout/main.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>

Я просмотрел некоторые ссылки на сайте разработчиков Android: Дополнительные типы ресурсов: Цвет и нашел этот код:

Пример: файл XML, сохраненный в res/values ​​/colors.xml:

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

Этот код приложения извлекает цветовой ресурс:

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

Этот макет XML применяет цвет к атрибуту:

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

Я думаю, что мои два xml файла следуют этому примеру довольно близко - однако единственное отличие заключается в том, что я не использовал код приложения для извлечения цветового ресурса. Я не считаю, что это необходимо (но это разница.) Я думал, что посмотрю, есть ли у кого-нибудь другие проблемы или решение? или это ошибка?

Я обновил все мои файлы Android sdk (и Eclipse) на прошлой неделе, поэтому считаю, что они были последними.

Ответ 1

После эксперимента в этом случае: android:textColor="@colors/text_color" неверно, поскольку @color не зависит от имени файла. Вы можете назвать свой файл ресурсов foobar.xml, это не имеет значения, но если вы определили некоторые цвета в нем, вы можете получить к ним доступ с помощью @color/some_color.

Update:

местоположение файла: RES/значения/colors.xml Имя файла произвольное. Имя элемента будет использоваться как идентификатор ресурса. (Source)

Ответ 2

Вариант с использованием только стандартного цветового кода:

android:textColor="#ff0000"

Ответ 3

У вас есть опечатка в вашем xml; это должно быть:

android:textColor="@color/text_color"

что "@color" без 's'.

Ответ 4

Вы должны написать textcolor в xml как

android:textColor="@color/text_color"

или

android:textColor="#FFFFFF"