Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 以编程方式从R.color检索颜色会返回错误的颜色_Android_Xml_Colors - Fatal编程技术网

Android 以编程方式从R.color检索颜色会返回错误的颜色

Android 以编程方式从R.color检索颜色会返回错误的颜色,android,xml,colors,Android,Xml,Colors,我试图获取用户xml文件中列出的颜色名称并返回十六进制颜色。我正在使用基于帖子的代码。我知道我很接近,因为当我在哈希映射中有一小组颜色,名称作为键时,它工作正常,但文件中有300多种颜色,查找5或6似乎浪费了处理时间。下面的代码是正在使用的,但是如果需要,我可以包含更多代码 用户的xml文件示例 <Item> <Item_Name>Daily</Item_Name> <Price>400</Price> <

我试图获取用户xml文件中列出的颜色名称并返回十六进制颜色。我正在使用基于帖子的代码。我知道我很接近,因为当我在哈希映射中有一小组颜色,名称作为键时,它工作正常,但文件中有300多种颜色,查找5或6似乎浪费了处理时间。下面的代码是正在使用的,但是如果需要,我可以包含更多代码

用户的xml文件示例

<Item>
    <Item_Name>Daily</Item_Name>
    <Price>400</Price>
    <Type>Entry</Type>
    <Color>Green</Color>
</Item>
当我将此作为调试运行时,给出的结果如下:

0: name = "green"
1: res = tech.travis.poolpos.R$color
2: field = public static final int tech.travis.poolpos.R$color.green
3: color = 2131099743 (integer).  This translates to #&5f00067f,
     which is about a navy blue with an opacity of about 37%.
应该为绿色返回的整数应该是-16744448,而不是21301099743


如果可能的话,如何将名称作为字符串进行匹配并返回colors.xml中列出的颜色?

这是颜色的id,而不是颜色本身。要获得颜色,需要getResources.getColorfield.getIntnull;相反


R上的所有内容都是一个ID。这就是为什么我们有像getColor或getDrawable这样的方法,它们将R.color.my\u color或R.drawable.my\u drawable作为参数。

这是颜色的ID,而不是颜色本身。要获得颜色,需要getResources.getColorfield.getIntnull;相反


R上的所有内容都是一个ID。这就是为什么我们有像getColor或getDrawable这样的方法,它们将R.color.my\u color或R.drawable.my\u drawable作为参数。

resources.getColor不推荐使用。获得颜色的新方法是:

ContextCompat.getColor(context, R.color.color_name)

resources.getColor已弃用。获得颜色的新方法是:

ContextCompat.getColor(context, R.color.color_name)

我认为这是颜色的id,而不是颜色本身。要获得颜色,需要使用getResources.getColorfield.GetIntNull。非常感谢。请把它贴出来作为回答,这样我就可以接受了。我想这是颜色的id,而不是颜色本身。要获得颜色,需要使用getResources.getColorfield.GetIntNull。非常感谢。请把它作为一个答案贴出来,这样我就可以接受了。
ContextCompat.getColor(context, R.color.color_name)