使用资源定义的颜色初始化int

时间:2013-12-23 09:40:30

标签: android android-resources

我有一个资源文件,我在其中定义颜色:

colors.xml:

...
<color name="White">#FFFFFF</color>
<color name="Ivory">#FFFFF0</color>
<color name="LightYellow">#FFFFE0</color>
<color name="Yellow">#FFFF00</color>
<color name="Snow">#FFFAFA</color>
<color name="FloralWhite">#FFFAF0</color>
<color name="LemonChiffon">#FFFACD</color>
<color name="Cornsilk">#FFF8DC</color>
<color name="Seashell">#FFF5EE</color>
<color name="LavenderBlush">#FFF0F5</color>
<color name="PapayaWhip">#FFEFD5</color>
...

我想在一个类中初始化int字段,其颜色来自该列表(不是颜色ID,颜色值)

class MyClass {

   private int color1 = ?????;
   private int color2 = ?????;

   ...

可行吗? 我试过了Resources.getSystem().getColor(R.color.White);,但我得到了:

12-23 11:22:36.016:E / AndroidRuntime(14646):引起:android.content.res.Resources $ NotFoundException:资源ID#0x7f0b0016

1 个答案:

答案 0 :(得分:2)

使用getResources(),如下所示 -

getResources().getColor(R.color.White);

而不是

Resources.getSystem().getColor(R.color.White);

根据Android documentationResources.getSystem()仅提供system-level resources,而不是应用级别的(例如strings.xml文件中的资源)。

更新:要在班级中提供上下文 -

public class MyClass{
    Context context;
    MyClass(Context ctx){
        this.context = ctx;
    }
// your other stuff here
// Now you can access the context. like 
/* context.getResources().getColor(R.color.White); */
}