在layout/main.xml主布局文件中的TextView中设置textColor而不引用colors.xml文件.(它需要#RRGGBB而不是@ color/text_color)

use*_*019 48 android

我正在尝试为我正在编写的程序设置一些通用颜色.我创建了一个colors.xml文件,并尝试直接引用layout.xml文件中的颜色.我相信我正在这样做,但它给了我以下错误:

Color value '@colors/text_color' must start with #
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

我查看了android开发者网站上的一些参考资料:更多资源类型:Color并找到了这段代码:

示例:保存在res/values/colors.xml的XML文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="opaque_red">#f00</color>
   <color name="translucent_red">#80ff0000</color>
</resources>
Run Code Online (Sandbox Code Playgroud)

此应用程序代码检索颜色资源:

Resources res = getResources();
int color = res.getColor(R.color.opaque_red);
Run Code Online (Sandbox Code Playgroud)

此布局XML将颜色应用于属性:

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/translucent_red"
    android:text="Hello"/>
Run Code Online (Sandbox Code Playgroud)

我认为我的两个xml文件非常接近这个例子 - 但唯一的区别是我没有使用任何应用程序代码来检索颜色资源.我不相信这是必要的(但这是有区别的.)我以为我会看到是否有其他人有类似的问题或解决方案?或者这是一个错误?

我上周更新了所有的android sdk(和Eclipse插件)文件,所以我相信它们是最新的.

Gen*_* Bo 40

仅使用标准颜色代码的变体:

android:textColor="#ff0000"
Run Code Online (Sandbox Code Playgroud)


Ren*_*aud 30

在对该案例进行试验之后: android:textColor="@colors/text_color"错误,因为@color它不依赖于文件名.您可以将资源文件命名为foobar.xml,但这并不重要,但如果您在其中定义了一些颜色,则可以使用它们来访问它们@color/some_color.

更新:

文件位置:res/values/colors.xml文件名是任意的.元素的名称将用作资源ID.(来源)


小智 17

你的xml中有一个拼写错误; 它应该是:

android:textColor="@color/text_color"
Run Code Online (Sandbox Code Playgroud)

这是没有's'的"@color".