在XML中,我们可以通过textColor属性设置文本颜色,比如android:textColor="#FF0000"。但是我如何通过编码来改变它呢?
我试过这样的方法:
holder.text.setTextColor(R.color.Red);
其中holder只是一个类,文本类型为TextView。红色是字符串中设置的RGB值(#FF0000)。
但是它显示的不是红色而是另一种颜色。我们可以在setTextColor()中传递什么样的参数?在文档中,它说的是int,但它是资源引用值还是其他什么?
你应该使用:
holder.text.setTextColor(Color.RED);
当然,您可以使用Color类中的各种函数来获得相同的效果。
Color.parseColor (Manual) (like LEX uses)
text.setTextColor(Color.parseColor("#FFFFFF"));
Color.rgb and Color.argb (Manual rgb) (Manual argb) (like Ganapathy uses)
holder.text.setTextColor(Color.rgb(200,0,0));
holder.text.setTextColor(Color.argb(0,200,0,0));
And of course, if you want to define your color in an XML file, you can do this:
<color name="errorColor">#f00</color>
because the getColor() function is deprecated1, you need to use it like so:
ContextCompat.getColor(context, R.color.your_color);
You can also insert plain HEX, like so:
myTextView.setTextColor(0xAARRGGBB);
Where you have an alpha-channel first, then the color value.
当然,可以查看完整的手册,公共类Color extends Object。
这段代码以前也在这里:
textView.setTextColor(getResources().getColor(R.color.errorColor));
这个方法现在在Android m中被弃用了。但是你可以在支持库中的contextCompat中使用它,就像现在的例子所显示的那样。
如果你仍然想在XML文件中指定颜色:
<color name="errorColor">#f00</color>
然后在代码中使用以下两个方法之一引用它:
textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));
or
textView.setTextColor(getResources().getColor(R.color.errorColor, null));
第一个可能是可取的,如果你编译针对Android M,但你传递的主题可以为空,所以也许这对你更容易?
如果你在使用Compat库,你可以这样做
textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
如果你计划使用setTextAppearance,你应该知道它会用继承自主题的样式覆盖文本颜色。所以如果你想两者都用,然后再设置颜色。
如此:
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
textView.setTextColor(Color.RED);
这将导致你的textcolor为白色(暗主题)或黑色(浅主题):
textView.setTextColor(Color.RED);
textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
与此相反,在XML中顺序是任意的。
您也只能从XML文件执行此操作。
在values文件夹中创建一个color.xml文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="textbody">#ffcc33</color>
</resources>
然后在任何XML文件中,你可以使用,
android:textColor="@color/textbody"
或者你可以在Java文件中使用这种颜色:
final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));
我是这样做的:
创建一个名为Colors in res/values文件夹的XML文件。
我的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>
为了从xml文件中获得这些颜色,我使用了以下代码:
valor是TextView, ctx是Context对象。我不是从一个活动使用它,而是从一个BaseAdapter到一个ListView。这就是我使用Context对象的原因。
valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));
希望能有所帮助。
在文本视图中设置颜色有很多不同的方法。
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));
我这样做的一个TextView在一个ViewHolder为一个RecyclerView。我不太确定为什么,但它在ViewHolder初始化时对我不起作用。
public ViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text_view);
textView.setTextColor(context.getResources().getColor(R.color.myColor));
// Other stuff
}
但是当我把它移到onBindViewHolder时,它工作得很好。
public void onBindViewHolder(ViewHolder holder, int position){
// Other stuff
holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
}
希望这能帮助到一些人。
如果你使用Kotlin,有4种方法:(与Holder)
使用Android资源:
holder.textView.setTextColor (Color.GREEN)
使用RGB:
holder.textView.setTextColor(颜色。Rgb (255, 87, 34))
3)使用十六进制:
holder.textView.setTextColor(Color.parseColor("#C2185B"))
4)使用项目资源:(需要API级别23)
holder.textView.setTextColor(context.resources.getColor(R.color.colorMax,null))