How can I get color-int from color resource? How can I get color-int from color resource? android android

How can I get color-int from color resource?


You can use:

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

Check here on how to define custom colors:

http://sree.cc/google/android/defining-custom-colors-using-xml-in-android

EDIT(1):Since getColor(int id) is deprecated now, this must be used :

ContextCompat.getColor(context, R.color.your_color);

(added in support library 23)

EDIT(2):

Below code can be used for both pre and post Marshmallow (API 23)

ResourcesCompat.getColor(getResources(), R.color.your_color, null); //without themeResourcesCompat.getColor(getResources(), R.color.your_color, your_theme); //with theme


Based on the new Android Support Library (and this update), now you should call:

ContextCompat.getColor(context, R.color.name.color);

According to the documentation:

public int getColor (int id)

This method was deprecated in API level 23.Use getColor(int, Theme) instead

It is the same solution for getResources().getColorStateList(id):

You have to change it like this:

ContextCompat.getColorStateList(getContext(),id);

EDIT 2019

Regarding ThemeOverlay use the context of the closest view:

val color = ContextCompat.getColor(  closestView.context,  R.color.name.color)

So this way you get the right color based on your ThemeOverlay.

Specially needed when in same activity you use different themes, like dark/light theme. If you would like to understand more about Themes and Styles this talk is suggested: Developing Themes with Style

Nick Butcher - Droidcon Berlin - Developing Themes with Style


Define your color

values/color.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <!-- color int as #AARRGGBB (alpha, red, green, blue) -->    <color name="orange">#fff3632b</color>    ...    <color name="my_view_color">@color/orange</color></resources>

Get the color int and set it

int backgroundColor = ContextCompat.getColor(context, R.color.my_view_color);// Color backgroundColor = ... (Don't do this. The color is just an int.)myView.setBackgroundColor(backgroundColor);

See also