Set Background color programmatically [duplicate]
Asked Answered
W

8

179

I try to set background color programmatically but when I set every one of my colors, the background being black but with any color background being white like the application theme.

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(color.white);

Can you see the code?

Waits answered 7/5, 2014 at 12:29 Comment(1)
What is color.white?Actualize
P
236

I didn't understand your question ... what do you mean by "when i set every one of my colour"? try this (edit: "#fffff" in original answer changed to "#ffffff"

  yourView.setBackgroundColor(Color.parseColor("#ffffff"));
Portfolio answered 7/5, 2014 at 12:43 Comment(0)
R
145

you need to use getResources() method, try to use following code

View someView = findViewById(R.id.screen);
View root = someView.getRootView();
root.setBackgroundColor(getResources().getColor(color.white)); 

Edit::

getResources.getColor() is deprecated so, use like below

 root.setBackgroundColor(ContextCompat.getColor(this, R.color.white)); 
Rhythmandblues answered 7/5, 2014 at 12:45 Comment(2)
getResources().getColor() is deprecatedBaking
in AppCompatActivity you can just use context.getColor() or this.getColor - in fragments you can use getActivity().getColor()Chinchin
S
47

You can use

 root.setBackgroundColor(0xFFFFFFFF);

or

 root.setBackgroundColor(Color.parseColor("#ffffff"));
Strawn answered 7/5, 2014 at 12:41 Comment(3)
root.setBackgroundColor(Color.RED); alsoSeppuku
If using the first example, which bytes map to which color components? For instance, is it 0xRRGGBBAA, or 0xAARRGGBB, or maybe 0xBBGGRRAA or perhaps 0xXXRRGGBB? Doesn't really matter if you're doing white and black, but for basically any other color it's necessary to know this information.Junkie
@Aroth 0xAARRGGBB.Amphibiotic
M
37

The previous answers are now deprecated, you need to use ContextCompat.getColor to retrieve the color properly:

root.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.white));
Margaritamargarite answered 15/4, 2016 at 16:15 Comment(1)
in kotlin root.setBackgroundColor(ContextCompat.getColor(activity?.applicationContext!!, R.color.white));Ap
G
28

If you just want to use some of the predefined Android colors, you can use Color.COLOR (where COLOR is BLACK, WHITE, RED, etc.):

myView.setBackgroundColor(Color.GREEN);

Otherwise you can do as others have suggested with

myView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.myCustomGreen));

I don't recommend using a hex color directly. You should keep all of your custom colors in colors.xml.

Gilbertina answered 6/1, 2017 at 5:28 Comment(0)
A
20

This must work:

you must use getResources().getColor(R.color.WHITE) to get the color resource, which you must add in the colors.xml resource file

View someView = findViewById(R.id.screen);

someView.setBackgroundColor(getResources().getColor(R.color.WHITE));
Awfully answered 9/11, 2016 at 14:46 Comment(0)
A
2

If you save color code in the colors.xml which is under the values folder,then you should call the following:

root.setBackgroundColor(getResources().getColor(R.color.name));

name means you declare in the <color/> tag.

Argillaceous answered 24/6, 2016 at 9:21 Comment(1)
This has been deprecated.Grandiloquence
S
2

In my case it wasn't changing the color because I was setting the color in my xml resource.

After delete the line that set the color it worked perfectly programmatically

This is an example I did in a RecyclerView

final Drawable drawable = ContextCompat.getDrawable(mContext, R.drawable.ic_icon).mutate();

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) {
    holder.image.setBackground(drawable);
} else {
    holder.image.setBackgroundDrawable(drawable);
}
Supereminent answered 11/10, 2016 at 15:53 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.