Create a new color drawable

JavaAndroidAndroid DrawableColordrawable

Java Problem Overview


I am trying to convert a hex value to an int so I can create a new color drawable. I'm not sure if this is possible, but according to the documentation, it should. It plainly asks for

> public ColorDrawable (int color) > > Added in API level 1 Creates a new ColorDrawable with the specified > color. > > Parameters color The color to draw.

So, my code isn't working because I'm getting an Invalid int: "FF6666" error. Any ideas?

int decode = Integer.decode("FF6666");
ColorDrawable colorDrawable = new ColorDrawable(decode);

Java Solutions


Solution 1 - Java

Since you're talking about hex you have to start with 0x and don't forget the opacity.

So basically: 0xFFFF6666

ColorDrawable cd = new ColorDrawable(0xFFFF6666);

You can also create a new colors.xml file into /res and define the colors like:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="mycolor">#FF6666</color>
</resources>

and simply get the color defined in R.color.mycolor

getResources().getColor(R.color.mycolor)

Solution 2 - Java

For using with ContextCompat and rehuse the color you can do something like this:

ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(this, R.color.white));

Solution 3 - Java

It should be like this...

ColorDrawable cd = new ColorDrawable(0xffff6666);

Note I used 8 hex digits, not 6 hex digit . which add to transparency

Solution 4 - Java

By followingthe above advice,to be a summary of this question:

  1. ColorDrawable colorDrawable = new ColorDrawable(Color.parseColor("#ce9b2c"));`

  2. ColorDrawable colorDrawable = new ColorDrawable(0xFFCE9B2C); Note there is 8 hex digits, not 6 hex digit,which no work. Case all

  3. ColorDrawable colorDrawable = new ColorDrawable(ContextCompat.getColor(mContext,R.color.default_color));

Selecting up to you!

Solution 5 - Java

I think you have to use :

> public static int parseColor (String colorString) > > Added in API level 1 Parse the color string, and return the > corresponding color-int. If the string cannot be parsed, throws an > IllegalArgumentException exception. Supported formats are: #RRGGBB #AARRGGBB red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray, darkgray, grey, lightgrey, darkgrey, aqua, fuschia, lime, > maroon, navy, olive, purple, silver, teal

Solution 6 - Java

> This is how I converted a Hex color to int and applied to a Background > of a View

Let's say that we have a color #8080000.

1) Hex to int conversion
int myColor = Color.parseColor("#808000");

###2) Set background

view.setBackgroundColor(context.getColor(myColor));

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
QuestionstacksonstacksView Question on Stackoverflow
Solution 1 - JavaEnrichmanView Answer on Stackoverflow
Solution 2 - JavaJpCrowView Answer on Stackoverflow
Solution 3 - JavaCRUSADERView Answer on Stackoverflow
Solution 4 - JavaBertKingView Answer on Stackoverflow
Solution 5 - JavaHpTermView Answer on Stackoverflow
Solution 6 - JavaRohit SinghView Answer on Stackoverflow