android: How to use custom colors?

user1655806 picture user1655806 · Sep 7, 2012 · Viewed 10.7k times · Source

Im trying to set the backgroundcolor of my FrameLayout using my own colors.

I created a .xml file which contains my own colors. Here it is:

<?xml version="1.0" encoding="utf-8"?> 
<resources>
    <color name="red">#FF0000</color>
    <color name="orange">#FF7D00</color>
    <color name="yellow">#FFFF00</color>
    <color name="green">#00FF00</color>
    <color name="blue">#00B4FF</color>
    <color name="black">#000000</color>
</resources>

And here is the code where Im trying to set the backgroundcolor, but when I run the app, the FrameLayout is always grey, why?:

FrameLayout MyFrameLayout = new FrameLayout(this);
LayoutParams MyFrameLayoutParam = new LayoutParams(LayoutParams.FILL_PARENT, 200);
MyFrameLayout.setLayoutParams(MyFrameLayoutParam);

MyFrameLayout.setBackgroundColor(R.color.red);

Parent.addView(MyFrameLayout);

Answer

tsmith picture tsmith · Sep 7, 2012

You need to retrieve the color from resources before setting it. You are assigning the R.java id not the actual value.

Color red = getApplicationContext().getResources().getColor(R.color.red)
MyFrameLayout.setBackgroundColor(red);