可能用字符串获取颜色?
在我values
文件夹我有my_colors.xml
:可能用字符串获取颜色?
<resources>
<!-- Orange -->
<color name="orangePrimary">#f6a02d</color>
<color name="orange1">#e3952a</color>
<color name="orange2">#da8f28</color>
<color name="orange3">#d08926</color>
</resources>
有没有办法让这些颜色只是它的名字的字符串? 喜欢的东西view.setBackgroundColor.getColor("orange1");
对于图像你有这样的getResources().getIdentifier("my_image", "drawable", getPackageName());
希望你们明白我的意思。 问候。
你有没有试过如下:
int desiredColour = getResources().getColor(getResources().getIdentifier("my_color", "color", getPackageName()));
希望它能帮助!
从Android的支持库23,一个新的的getColor()开始,方法已经被添加到ContextCompat。
所以,只要致电:
ContextCompat.getColor(context, R.color.your_color);
另一种是depracated getResources.getColor()所以你需要实现以上。没有任何方法只是通过颜色的名称来访问它。您必须从颜色文件中提供颜色标识。
多数民众赞成在这么冷酷!我有8种不同的颜色,每种都有4种不同的色温。为了知道哪一个是需要的,我得到一个像“橙色”的字符串。 – kuemme01
好吧,我现在用反射名称得到了颜色,并在我身边得到了这个工作。
你需要编写一个像这样的函数。
public int getColorByName(String name) {
int colorId = 0;
try {
Class res = R.color.class;
Field field = res.getField(name);
colorId = field.getInt(null);
} catch (Exception e) {
e.printStackTrace();
}
return colorId;
}
现在得到使用
int resourceId = getColorByName("orange1");
而且资源ID设置绘制作为资源在ImageView
这样。
imageView.setBackgroundResource(resourceId);
我试着设置img.setBackgroundColor(resourceId)
这是设置错了颜色。
在你的情况我想建议,以保持颜色的类型数组在res/values/arrays.xml
这样
<array name="colors">
<item>#FFFF0000</item>
<item>#FF00FF00</item>
<item>#FF0000FF</item>
</array>
查看开发商的文档为Typed Array有关如何使用它。
是的,Reaz Murshed建议他在改变他的答案之前。 “desiredColour”总是错误的,我不知道为什么,但在我的情况下,它始终是那种深色透明的紫色 – kuemme01
当然,我已经更新了我的答案 您首先获取资源ID,然后您必须从资源ID – mihanovak1024
UUhhhh,这工作!但我没有得到问题,在未来的方法getColor()? – kuemme01