Android .xml文件:为什么预定义的颜色不适合我?

当我看杂项。 关于指定颜色的Android教程和示例我经常看到使用@color/red@color/black等常量。 由于一些奇怪的原因,永远不会为我工作! 我总是需要使用“#RGB”,#ARGB,…,#AARRGGBB表示法指定颜色。

尽快尝试使用这些助记符常量(例如“@ 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但这只会导致一个不同的错误)? 我需要自己指定这些颜色吗? 如果是的话:如何和在哪里? 任何想法或build议?

迈克尔

Solutions Collecting From Web of "Android .xml文件:为什么预定义的颜色不适合我?"

是“colors.xml”添加到您的res / values文件夹这些颜色常量的定义?

如果要使用Android平台中预定义的颜色,则语法是@android:color / white。 开头的“android:”表示该资源不是您的应用程序的一部分。

颜色XML文件位于值文件夹中,其中必须包含颜色值。

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

确保您的颜色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> 

请注意,标签是资源 ,而不是select器

奇怪的Android不提供一个体面的颜色列表。 我奇怪地说,因为在我30年的职业生涯中,这是我遇到的第一种语言,那就是不这样做。 尽pipe如此,它是build立在所有基本库中定义颜色的Java基础之上的。

定义的是前缀,所以你不会find它们:)要find它们(如果使用eclipse)去xml文档,你需要的颜色typesandroid:background =“@ android:color /并做一个Ctrl空间。在我的版本(目前我们说的),我得到了十多个,例如:holo_orange_dark

所以,使用或抱怨,谷歌修复这个问题。 我把它称为问题,因为强制所有开发人员手动描述所有颜色和值是没有意义的。

其他人没有提到的一个重要的部分是对颜色的引用必须是

 @color/black 

但是xml文件必须是

 colors.xml 

(注意在xml文件名称复数,但不复数@color)