tra*_*mes 1 xml android colors
我正在尝试采用用户的xml文件中列出的颜色名称并返回十六进制颜色。我正在根据R.color以编程方式根据帖子检索颜色使用代码。我知道我已经接近了,因为当我在哈希图中以名称作为键使用一小组颜色时,它正在工作,但是文件中超过300种颜色并查找5或6种颜色似乎浪费了处理时间。下面的代码正在使用,但是如果需要,我可以添加更多代码。
用户的xml文件示例。
<Item>
<Item_Name>Daily</Item_Name>
<Price>400</Price>
<Type>Entry</Type>
<Color>Green</Color>
</Item>
Run Code Online (Sandbox Code Playgroud)
colors.xml
<color name="green">#008000</color>
Run Code Online (Sandbox Code Playgroud)
Java:
0 **pass in name from method call**
1 Class res = R.color.class;
2 Field field = res.getField( name );
3 color = field.getInt(null);
Run Code Online (Sandbox Code Playgroud)
当我将其作为调试运行时,给出的结果如下:
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%.
Run Code Online (Sandbox Code Playgroud)
应该为绿色返回的整数应该是-16744448,而不是2131099743。
如果可能的话,如何将名称作为字符串并与之匹配并返回colors.xml中列出的颜色?
那是颜色的id,而不是颜色本身。要获得颜色,您需要getResources().getColor(field.getInt(null));代替。
一切R都是ID。这就是为什么我们有类似getColor或getDrawable作为参数R.color.my_color或的方法的原因R.drawable.my_drawable。
| 归档时间: |
|
| 查看次数: |
886 次 |
| 最近记录: |