2010-10-18 3 views
27

Когда я смотрю разное. Обучающие программы и примеры для Android, когда дело доходит до определения цветов, я очень часто вижу константы, такие как @color/red или @color/black и т. Д. Используется. По какой-то странной причине НИКОГДА не работает для меня! Мне всегда нужно указывать цвета, используя обозначения «#RGB», #ARGB, ..., #AARRGGBB.Android .xml файлы: Почему предопределенные цвета не работают для меня?

Как только я попытаюсь использовать любую из тех мнемонических констант, как, например, «@ color/red» Я получаю сообщения об ошибках:

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

Почему это так? Почему я не могу использовать эти предопределенные константы? Нужно ли префикс их с некоторым именем пакета (я пробовал @android:color/red, но это только вызвало другую ошибку)? Нужно ли указывать эти цвета самостоятельно? Если да: как и где? Любые идеи или предложения?

Майкл

ответ

23

Добавлен ли «colors.xml» в вашу папку res/values, где определены эти цветовые константы?

+5

Теперь я создал такой файл в своем приложении и определил кучу цвета по умолчанию, и теперь я действительно могу использовать такие именованные цвета. По-видимому, все те примеры, которые я видел, предполагали существование такого файла, даже не заявляя об этом явно. Таким образом, я ошибочно пришел к выводу, что эти значения были предопределены. – mmo

+0

См. Http://stackoverflow.com/a/3964048/632951 тоже – Pacerier

58

Если вы хотите использовать цвета заранее определены в Android платформы, синтаксис @android: цвет/белый. «Android:» в начале указывает, что ресурс не является частью вашего приложения.

+2

Нет, как я уже писал выше: это не работает - по крайней мере, не для меня. Существуют ли какие-либо специальные настройки или «импорт» (или что-то еще), необходимые для этого? – mmo

+13

На самом деле, мне просто нужно было узнать, что это работает, но, по-видимому, определены только «цвета» @android: цвет/белый и @android: цвет/черный. Все остальные, которые я пробовал (например, @android: цвет/красный, @android: цвет/зеленый, @android: цвет/синий и т. Д.), Приводили к ошибкам. Очень странно! – mmo

+1

Это просто странно, если вы ожидаете, что эти цвета будут определены платформой, а это не так. Обычно, если вы видите пример приложения с цветом @, это означает, что цвет был определен в самом приложении. –

4

Убедитесь, что цвет XML-файл находится в пределах значений папки, а не цвета папки.

Таким образом, вы должны иметь ...

значения /colors.xml

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

и это не ...

цвет /colors.xml

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

Обратите внимание, что тег ресурсы, не селектор.

6

Цвет XML-файла находится в папке значений, где он должен содержать значения цвета. В теге ресурсов.

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

+0

должно быть <цвет андроида: name = "green"> # 00ff00 – John

+0

Не нужно объявлять пространство имен 'xmlns', потому что файлы ресурсов Android не нужны префикс 'android:'. – Flawyte

0

Важной частью этого, что никто не упомянул, что ссылка на цвет должен быть

@color/black 

но файл XML должен быть

colors.xml 

(обратите внимание на множественное число в имени файла xml, но не множественное число @color)

+4

- 1, ** Нет ** имя файла может быть любым. Важно то, что имя тега должно быть «color», например. ' # 00ff00' – Pacerier

3

странно Android не обеспечивает достойный список цветов.И я говорю странно, потому что во время моей 30-летней карьеры это первый язык, который я встретил, который этого не делает. И это несмотря на то, что он построен на Java, который определяет цвета во всех его базовых библиотеках.

те, которые определены префикс, так что вы их не найдете :) Чтобы найти их (при использовании затмения) перейти на XML-документ, где вам нужен типа андроид цвета : фон = "@ андроид: цвет/и сделать Ctrl Space на моей версии (текущий, как мы говорим) я получаю больше дюжины , например:.. holo_orange_dark

таким образом, использование того или пожаловаться, так Google исправляет эту проблему и я называю это проблема, потому что. нет смысла заставить всех разработчиков вручную описывать все цвета и значения.

+0

«это первый язык, с которым я встречался, который этого не делает» - что вы называете «языком»? –

+0

Согласен. Это первая среда, в которой я работал, в которой не было предварительно определенных цветов, но она определяет черный/белый/прозрачный. Это странно, я согласен, но, по-видимому, это правда. Вот почему это путает людей, которые были вокруг долгое время. Чтобы усугубить ситуацию, я не могу найти хорошее описание в официальных документах. Вам просто нужно google. Weird. – Mitch

Смежные вопросы