13

I know how to set a drawable as the color of the text using xml but I don't know how it is done in Java.

In xml is something like this:

android:textColor="@drawable/selected_color"

in JAVA ?

Samet ÖZTOPRAK
  • 3,112
  • 3
  • 32
  • 33
bytebiscuit
  • 3,446
  • 10
  • 33
  • 53

5 Answers5

16

Assuming that by "drawable" you mean a selector with color items like this:

res/color/your_colors.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#ffffffff"/>
    <item android:color="#ff1c5fab"/>
</selector>

You can use this code: mText.setTextColor(getResources().getColorStateList(R.color.your_colors));

madx
  • 6,723
  • 4
  • 55
  • 59
5

color/selector_colors.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:color="@color/white" android:state_checked="true" />
    <item android:color="@color/white" android:state_pressed="true" />
    <item android:color="@color/white" android:state_activated="true" />

    <item android:color="@color/black" />

</selector>

you have to implement it into textview like that:

textview.setTextColor(context.getResources().getColorStateList(R.color.selector_colors));
Samet ÖZTOPRAK
  • 3,112
  • 3
  • 32
  • 33
2

Assuming that by "drawable" you mean a selector with color items, you should refer to this question.

You won't be able to use the textcolor with image drawables, or selectors containing image drawables.

Community
  • 1
  • 1
alex.zherdev
  • 23,914
  • 8
  • 62
  • 56
1

Did you see this, this, or this ?

The last link says to use:

tvImagesTitle.setTextColor( getResources().getColor(R.color.blue) ); 
Community
  • 1
  • 1
Jack
  • 9,156
  • 4
  • 50
  • 75
0

One easy way is to use HTML:

StringBuilder text = new StringBuilder();
text.append("<font color='").append(selectedColor).append("'>")                     .append("your text here").append("</font>");

textView.setText(Html.fromHtml(text.toString()), BufferType.SPANNABLE);
Chris
  • 22,923
  • 4
  • 56
  • 50