【问题标题】:Android .xml files: Why do predefined colors not work for me?Android .xml 文件:为什么预定义的颜色对我不起作用?
【发布时间】:2011-04-27 05:04:56
【问题描述】:

当我看杂项。关于指定颜色的 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,但这只会导致不同的错误)? 我需要自己指定这些颜色吗?如果是这样:如何以及在哪里?有什么想法或建议吗?

迈克尔

【问题讨论】:

    标签: android


    【解决方案1】:

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

    【讨论】:

    • 不,正如我在上面已经写过的:这行不通——至少对我来说不行。是否需要任何特殊设置或“导入”(或其他)才能使其正常工作?
    • 实际上,我只需要了解,这确实有效,但显然只定义了“颜色”@android:color/white 和 @android:color/black。我尝试过的所有其他方法(如@android:color/red、@android:color/green、@android:color/blue 等)都产生了错误。很奇怪!
    • 如果您期望这些颜色由平台定义,这很奇怪,但事实并非如此。通常,如果您看到带有 @color/ 的示例应用程序,这意味着颜色是在应用程序本身中定义的。
    • 如果这些已定义,developer.android.com/reference/android/graphics/… 那么我希望 XML 值也可以预定义。
    • @Chloe,这个列表是错误的。正确的是 developer.android.com/reference/android/R.color.html 。 (Ctrl-Space 查看可能的值。)
    【解决方案2】:

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

    【讨论】:

    • 我现在在我的应用程序中创建了这样一个文件,并在那里定义了一堆默认颜色,现在我确实可以使用这样的命名颜色。显然,我所看到的所有这些示例都假设存在这样的文件,而没有明确说明这一点。因此,我错误地得出了这些值是预定义的结论。
    【解决方案3】:

    确保您的颜色 XML 文件位于 values 文件夹中,而不是 colors 文件夹中。

    所以你应该...

    /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>
    

    注意标签是resources,而不是selector

    【讨论】:

      【解决方案4】:

      颜色 XML 文件位于 values 文件夹中,其中必须包含颜色值。在资源标签内。

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

      【讨论】:

      • 应该是 #00ff00
      • 无需声明命名空间xmlns,因为android资源文件不需要android:前缀。
      【解决方案5】:

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

      @color/black
      

      但xml文件必须是

      colors.xml
      

      (注意 xml 文件名中的复数,但不是复数 @color)

      【讨论】:

      • -​1, No 文件名可以是任何东西。重要的是标签名称必须是color,例如&lt;color name="green"&gt;#00ff00&lt;/color&gt;
      • 注意到了。更改 lauch_backgroud.xml 中的值。
      【解决方案6】:

      奇怪的是,Android 没有提供合适的颜色列表。而且我说的很奇怪,因为在我 30 年的职业生涯中,这是我遇到的第一种不这样做的语言。尽管它是基于 Java 构建的,它在所有基本库中定义了颜色。

      已定义的有前缀,因此您将找不到它们 :) 要找到它们(如果使用 eclipse ),请转到需要颜色的 xml 文档 输入 android:background="@android:color/ 并按 Ctrl 空格键。 在我的版本(我们所说的当前版本)上,我得到了十几个。 例如:holo_orange_dark

      所以,使用它或投诉,以便 Google 解决此问题。我称之为问题,因为强制所有开发人员手动描述所有颜色和值是没有意义的。

      【讨论】:

      • “这是我遇到的第一种不这样做的语言”——你把什么叫做“语言”?
      • 我同意。这是我工作过的第一个没有预定义颜色但定义了黑色/白色/透明的环境。这很奇怪,我同意,但显然是真的。这就是为什么它让已经存在很长时间的人感到困惑的原因。更糟糕的是,我在官方文档中找不到真正好的描述。你只需要谷歌周围。很奇怪。
      猜你喜欢
      • 2021-12-20
      • 1970-01-01
      • 2015-04-08
      • 2015-04-23
      • 1970-01-01
      • 2021-04-17
      • 1970-01-01
      • 1970-01-01
      • 2014-08-01
      相关资源
      最近更新 更多