How to set background color of a View

AndroidViewColorsBackgroundSet

Android Problem Overview


I'm trying to set the background color of a View (in this case a Button).

I use this code:

// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

It causes the Button to disappear from the screen. What am I doing wrong, and what is the correct way to change the background color on any View?

Thanks.

Android Solutions


Solution 1 - Android

You made your button transparent. The first byte is the alpha.

Try v.setBackgroundColor(0xFF00FF00);

Solution 2 - Android

When you call setBackgoundColor it overwrites/removes any existing background resource, including any borders, corners, padding, etc. What you want to do is change the color of the existing background resource...

View v;
v.getBackground().setColorFilter(Color.parseColor("#00ff00"), PorterDuff.Mode.DARKEN);

Experiment with PorterDuff.Mode.* for different effects.

Solution 3 - Android

Several choices to do this...

Set background to green:

v.setBackgroundColor(0x00FF00);

Set background to green with Alpha:

v.setBackgroundColor(0xFF00FF00);

Set background to green with Color.GREEN constant:

v.setBackgroundColor(Color.GREEN);

Set background to green defining in Colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>     
    <color name="myGreen">#00FF00</color> 
    <color name="myGreenWithAlpha">#FF00FF00</color> 
</resources>

and using:

v.setBackgroundResource(R.color.myGreen);

and:

v.setBackgroundResource(R.color.myGreenWithAlpha);

or the longer winded:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreen));

and:

v.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.myGreenWithAlpha));

Solution 4 - Android

You can set the hex-color to any resource with:

View.setBackgroundColor(Color.parseColor("#e7eecc"));

Solution 5 - Android

// set the background to green
v.setBackgroundColor(0x0000FF00 );
v.invalidate();

The code does not set the button to green. Instead, it makes the button totally invisible.

Explanation: the hex value of the color is wrong. With an Alpha value of zero, the color will be invisible.

The correct hex value is 0xFF00FF00 for full opacity green. Any Alpha value between 00 and FF would cause transparency.

Solution 6 - Android

For setting the first color to be seen on screen, you can also do it in the relevant layout.xml (better design) by adding this property to the relevant View:

android:background="#FF00FF00"

Solution 7 - Android

> and what is the correct way to change > the background color on any View?

On any View? What you have is correct, though you should drop the invalidate() call.

However, some Views already have backgrounds. A Button, for example, already has a background: the face of the button itself. This background is a StateListDrawable, which you can find in android-2.1/data/res/drawable/btn_default.xml in your Android SDK installation. That, in turn, refers to a bunch of nine-patch bitmap images, available in multiple densities. You would need to clone and modify all of that to accomplish your green goals.

In short, you will be better served finding another UI pattern rather than attempting to change the background of a Button.

Solution 8 - Android

try to add:

setBackgroundColor(Color.parseColor("#FF0000"));

Solution 9 - Android

I use at API min 16 , target 23

Button WeekDoneButton = (Button) viewWeeklyTimetable.findViewById(R.id.week_done_button);

WeekDoneButton.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.colorAccent));

Solution 10 - Android

mButton.setBackgroundColor(getResources().getColor(R.color.myColor));

Solution 11 - Android

You can simple use :

view.setBackgroundColor(Color.parseColor("#FFFFFF"));

Solution 12 - Android

This question talks about changing the background color of a view. In one of the answers, the person explains how to change the background color during runtime. Obviously you are going to look into how to modify other objects on the screen, but this should give you a good start by at least allowing you to modify the background color of the view on button click.

Solution 13 - Android

Stating with Android 6 use ContextCompact

        view.setBackgroundColor( ContextCompat.getColor(this, R.color.your_color));

Solution 14 - Android

You can simple use :

view.setBackgroundColor(Color.rgb(0, 198, 255));

Solution 15 - Android

This works for me

v.getBackground().setTint(Color.parseColor("#212121"));

That way only changes the color of the background without change the background itself. This is usefull for example if you have a background with rounded corners.

Solution 16 - Android

In kotlin you could do it like this:

val backgroundColor = R.color.whatever_color_you_like
view.setBackgroundColor(getColorCompat(backgroundColor))

Where getColorCompat() is an extension function:

/**
 * Extension method to provide simpler access to {@link ContextCompat#getColor(int)}.
 */

 fun Context.getColorCompat(color: Int) = ContextCompat.getColor(this, color)

Solution 17 - Android

view.setBackgroundColor(R.color.primaryColor);

Adds color to previous color value, so i have a different color.

What works for me is :

view.setBackgroundResource(R.color.primaryColor);

Solution 18 - Android

Let suppose we have a primary color in values=>colors.xml as:

<resources>
    <color name="primary">#FDD835</color>
</resources>

so if we want to use our custom color into setBackgroundColor(@ColorInt int Color) then we just need an annotation @SuppressLint("ResourceAsColor") with constructor/method which will be used as:

    @SuppressLint("ResourceAsColor")
    public _LinearLayout(Context context) {
        super(context);
        
        // Formatting our layout : )
        super.setBackgroundColor(R.color.primary);
        
        ....


    }

Solution 19 - Android

You must pass an int in the argument.

First Example:

view.setBackgroundColor(-500136)

Second Example:

int colorId = R.color.green;

view.setBackgroundResource(colorId);

Solution 20 - Android

This should work fine: v.setBackgroundColor(0xFF00FF00);

Solution 21 - Android

I tried all the above ways. But I havent achieve what i need. Here is my try. If you are using hexcode for color and want to set the color as background of image, then this is the kotlin code.

val bitmap = Bitmap.createBitmap(30, 30, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val colorCode = "#ffffff"
canvas.drawColor(Color.parseColor(colorCode))
mImageViewLogo.setImageBitmap(bitmap)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionPeter vdLView Question on Stackoverflow
Solution 1 - AndroidrainhutView Answer on Stackoverflow
Solution 2 - AndroidEddieBView Answer on Stackoverflow
Solution 3 - AndroidJorgesysView Answer on Stackoverflow
Solution 4 - AndroidDarsh PatelView Answer on Stackoverflow
Solution 5 - Androidmalte kosianView Answer on Stackoverflow
Solution 6 - AndroidJustinBView Answer on Stackoverflow
Solution 7 - AndroidCommonsWareView Answer on Stackoverflow
Solution 8 - AndroidLong RainbowView Answer on Stackoverflow
Solution 9 - AndroidVostroView Answer on Stackoverflow
Solution 10 - AndroidGianluca DemarinisView Answer on Stackoverflow
Solution 11 - Androiddaniel kilinskasView Answer on Stackoverflow
Solution 12 - AndroidjbranchaudView Answer on Stackoverflow
Solution 13 - AndroidRaluca LucaciView Answer on Stackoverflow
Solution 14 - AndroidMahmoud Salah EldinView Answer on Stackoverflow
Solution 15 - AndroidMartin OlariagaView Answer on Stackoverflow
Solution 16 - AndroidAndroid DeveloperView Answer on Stackoverflow
Solution 17 - AndroidmeralonView Answer on Stackoverflow
Solution 18 - AndroidForWebTechView Answer on Stackoverflow
Solution 19 - AndroidDavid MutendaView Answer on Stackoverflow
Solution 20 - AndroidnishanuwView Answer on Stackoverflow
Solution 21 - AndroidShaffzView Answer on Stackoverflow