Arun
Arun

Reputation: 575

How to set the color of a TextView in Android?

In the string.xml file I use the following tag

<color name="mycolor1">#F5DC49</color>

If I use

 textview1.setTextColor(Color.CYAN);

it works, but

 textview1.setTextColor(R.color.mycolor1);

is not working.

How can I use the color defined in the XML file?

Upvotes: 56

Views: 75613

Answers (3)

Pratik Butani
Pratik Butani

Reputation: 62411

context.getResources().getColor is Deprecated.

You need to use ContextCompat.getColor(), which is part of the Support V4 Library (so it will work for all the previous API).

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

You will need to add the Support V4 library by adding the following to the dependencies array inside your app build.gradle:

compile 'com.android.support:support-v4:23.0.1' # or any version above

If you care about theming, the documentation specifies that the method will use the context's theme:

Starting in M, the returned color will be styled for the specified Context's theme

Upvotes: 14

Patrick Cullen
Patrick Cullen

Reputation: 8696

TextView.setTextColor() takes an int representing the color (eg. 0xFFF5DC49) and not the resource ID from the xml file. In an activity, you can do something like:

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

outside of an activity you'll need a Context eg.

   textView1.setTextColor(context.getResources().getColor(R.color.mycolor))

Upvotes: 83

AnilPatel
AnilPatel

Reputation: 2366

 textView1.setTextColor(Color.parseColor("#F5DC49"));

without resources

Upvotes: 22

Related Questions