【问题标题】:Colors and Colors name颜色和颜色名称
【发布时间】:2014-09-01 21:38:00
【问题描述】:

我在 strings.xml 中有一个字符串数组,它是一个颜色名称数组。而且,我在 colors.xml 中列出了与数组项同名的颜色。现在,我正在尝试使用 strings.xml 中的颜色名称(字符串)设置视图的背景。我该怎么做?

<color name="aliceBlue">#F0F8FF</color>
    <color name="antiqueWhite">#faebd7</color>
    <color name="antiqueWhite1">#ffefdb</color>
    <color name="antiqueWhite2">#eedfcc</color>
    <color name="antiqueWhite3">#cdc0b0</color>
    <color name="antiqueWhite4">#8b8378</color>
    <color name="aquaMarine1">#7fffd4</color>
    <color name="aquaMarine2">#76eec6</color>
    <color name="aquaMarine4">#458b74</color>
    <color name="azure1">#f0ffff</color>
    <color name="azure2">#e0eeee</color>
    <color name="azure3">#c1cdcd</color>
    <color name="azure4">#838b8b</color>

颜色.xml

<string-array name="colorNameArray">
    <item>AliceBlue</item>
    <item>AntiqueWhite</item>
    <item>AntiqueWhite1</item>
    <item>AntiqueWhite2</item>
    <item>AntiqueWhite3</item>
    <item>AntiqueWhite4</item>
    <item>aquamarine1</item><item>
    aquamarine2</item>
    <item>aquamarine4</item>
    <item>azure1</item>
    <item>azure2</item>
    <item>azure3</item>
    <item>azure4</item>

字符串.xml

请大家帮忙,感谢您的帮助。

【问题讨论】:

  • 我认为你必须使用开关。
  • 你为什么使用 colorNameArray ??你能解释一下吗?
  • 微调器?从列表中选择一种颜色?
  • 对于你的古董白色,我建议只是切换它,如果它是适用于 Color.parseColor 的颜色之一,则使用它作为默认值

标签: android xml


【解决方案1】:

改变

 <item>AliceBlue</item>

 <item>@color/AliceBlue</item>

全部更改,标签前需要@color/

更多信息见:

How can I save colors in array.xml and get its back to Color[] array

然后你可以得到你的颜色:

  int[] colorArray = getResources().getIntArray(R.array.colorNameArray);

然后你可以设置你的颜色。

如果您有多个项目并且需要更改所有项目,您可以使用以下代码:

1- 创建一个View 数组

  ArrayList<View> views = new ArrayList<View>();

2- 将要设置背景的所有视图添加到列表中

  views.add(iv);
  views.add(tv);

3- in for 语句改变所有背景,比如:

  for (int i = 0 ; i < views.size() ; i++ )
  {
      // set background with views.get(i) and colorArray[i]

  }

【讨论】:

  • 但问题是您需要在 R.java 中访问颜色本身的 id
  • ya @committedandroider 我知道了,我会编辑我的帖子,但 OP 数组也有问题
  • 聪明的解决方案,但不适用于他的古董白色。支持的格式有:#RRGGBB #AARRGGBB 'red'、'blue'、'green'、'black'、'white'、'gray'、'cyan'、'magenta'、'yellow'、'lightgray'、'darkgray ', '灰色', 'lightgrey', 'darkgrey', 'aqua', 'fuschia', 'lime', 'maroon', 'navy', 'olive', 'purple', 'silver', 'teal' Will如果颜色不是列出的颜色之一,则抛出非法参数异常
  • 感谢@committedandroider,我为这个问题编辑了我的代码,现在我认为这必须工作
【解决方案2】:

获取对视图的 java 对象引用。 并在该引用上调用此方法 setBackgroundColor(getResources().getColor(R.color.color_name));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多