In XML, we can set a text color by the textColor
attribute, like android:textColor="#FF0000"
. But how do I change it by coding?
I tried something like:
holder.text.setTextColor(R.color.Red);
Where holder
is just a class and text
is of type TextView
. Red is an RGB value (#FF0000) set in strings.
But it shows a different color rather than red. What kind of parameter can we pass in setTextColor()? In documentation, it says int
, but is it a resource reference value or anything else?
Using Adapter you can set the text color by using this code:
holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
text.setTextColor(getResource().getColor(R.color.black))
you have create black color in color.xml.
OR
text.setTextColor(Color.parseColor("#000000"))
here type desired hexcode
OR
text.setTextColor(Color.BLACK)
you can use static color fields
If you plan to use setTextAppearance you should know that it will overwrite the text color with the style inherited from the theme. So if you want to use both, set the color afterwards.
This works:
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);
While this will cause your textcolor to be for instance white(for dark theme) or black(for the light theme):
textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
Contrary to this in XML the order is arbitrary.
You can use textView.setTextColor(Color.BLACK)
to use any of the in-built colors of the Color
class.
You can also use textView.setTextColor(Color.parseColor(hexRGBvalue))
to define custom colors.
If you still want to specify your colors in your XML file:
<color name="errorColor">#f00</color>
Then reference it in your code with one of these two methods:
textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));
or
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
The first is probably preferable if you're compiling against Android M, however the theme you pass in can be null, so maybe that's easier for you?
And if you're using the Compat library you can do something like this
textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
textViewStatus.setTextColor(res.getColor(R.color.green));
You can use
holder.text.setTextColor(Color.rgb(200,0,0));
You can also specify what color you want with Transparency.
holder.text.setTextColor(Color.argb(0,200,0,0));
a for Alpha (Transparent) value r-red g-green b-blue
TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));
Above code is working on my side. Here text
is a TextView on which color is needed to be set.
I was doing this for a TextView in a ViewHolder for a RecyclerView. I'm not so sure why, but it didn't work for me in the ViewHolder initialization.
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text_view);
textView.setTextColor(context.getResources().getColor(R.color.myColor));
// Other stuff
}
But when I moved it to the onBindViewHolder, it worked fine.
public void onBindViewHolder(ViewHolder holder, int position){
// Other stuff
holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}
Hope this helps someone.
textView.setTextColor(ContextCompat.getColor(getApplicationC??ontext(),R.color.col??orWhite));
In the colors.xml
file, write in the code below:
<color name="colorWhite">#FFFFFF</color>
There are many different ways to set color on text view.
Add color value in studio res->values->colors.xml as
<color name="color_purple">#800080</color>
Now set the color in xml or actvity class as
text.setTextColor(getResources().getColor(R.color.color_purple)
If you want to give color code directly use below Color.parseColor code
textView.setTextColor(Color.parseColor("#ffffff"));
You can also use RGB
text.setTextColor(Color.rgb(200,0,0));
Use can also use direct hexcode for textView. You can also insert plain HEX, like so:
text.setTextColor(0xAARRGGBB);
You can also use argb with alpha values.
text.setTextColor(Color.argb(0,200,0,0));
a for Alpha (Transparent) v.
And if you're using the Compat library you can do something like this
text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
Try using the following code :
holder.text.setTextColor(Color.parseColor("F00"));
Try this:
TextView textview = (TextView) findViewById(R.id.textview );
textview .setTextColor(Color.parseColor("#85F85F"));
In Adapter you can set the text color by using this code:
holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));
use the following code in layout.xml
<TextView android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?
android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/add"
android:layout_marginTop="16dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#25383C"
android:textSize="13sp" />
getColor() is depreceted
So try this way:
tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));
And another one:
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));
I normally do this for any views:
myTextView.setTextColor(0xAARRGGBB);
where
AA defines alpha (00 for transparent, FF for opaque)
RRGGBB defines the normal HTML color code (like FF0000 for red).
In order to set color of a TextView, TextView.setTextColor(R.color.YOURCOLOR)
is not enough!
It has to be used like this –
TextView myText = (TextView) findViewById(R.id.YoutTextViewID);
myText.setTextColor(getResources().getColor(R.color.YOURCOLOR);
OR
myText.setTextColor(Color.parseColor("#54D66A"));
if you want to give color code directly then use
textView.setTextColor(Color.parseColor("#ffffff"));
or if you want to give color code from colors folder then use
textView.setTextColor(R.color.white);
text1.setTextColor(Color.parseColor("#000000"));
If you are in an adapter and still want to use a color defined in resources you can try the following approach:
holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
From API 23 onward, getResources().getColor()
is deprecated.
Use this instead:
textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
Use:
TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));
You can do this only from an XML file too.
Create a color.xml
file in the values folder:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="textbody">#ffcc33</color>
</resources>
Then in any XML file, you can set color for text using,
android:textColor="@color/textbody"
Or you can use this color in a Java file:
final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
Try this:
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
Add these to make changing text color simpler
myView.textColor = Color.BLACK // or Color.parseColor("#000000"), etc.
var TextView.textColor: Int
get() = currentTextColor
set(@ColorInt color) {
setTextColor(color)
}
myView.setTextColorRes(R.color.my_color)
fun TextView.setTextColorRes(@ColorRes colorRes: Int) {
val color = ContextCompat.getColor(context, colorRes)
setTextColor(color)
}
Similarly, I was using color.xml
:
<color name="white">#ffffff</color>
<color name="black">#000000</color>
For setting the TextView
background like:
textView.setTextColor(R.color.white);
I was getting a different color, but when I used the below code I got the actual color.
textView.setTextColor(Color.parseColor("#ff6363"));
I did this way: Create a XML file, called Colors in res/values folder.
My Colors.xml:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="vermelho_debito">#cc0000</color>
<color name="azul_credito">#4c4cff</color>
<color name="preto_bloqueado">#000000</color>
<color name="verde_claro_fundo_lista">#CFDBC5</color>
<color name="branco">#ffffff</color>
<color name="amarelo_corrige">#cccc00</color>
<color name="verde_confirma">#66b266</color>
</resources>
To get this colors from the xml file, I've used this code: valor it's a TextView, and ctx it's a Context object. I'm not using it from an Activity, but a BaseAdapter to a ListView. That's why I've used this Context Object.
valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));
Hope it helps.
holder.userType.setTextColor(context.getResources().getColor(
R.color.green));
holder.text.setTextColor(Color.rgb(200,0,0));
or
myTextView.setTextColor(0xAARRGGBB);
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
For providing rgb values: text.setTextColor(Color.rgb(200,0,0));
For parsing the color from a hex value:
text.setTextColor(Color.parseColor("#FFFFFF"));
Source: Stackoverflow.com