如何设置TextView的文本颜色在代码?

在XML中,我们可以通过textColor属性设置文本颜色,就像android:textColor="#FF0000"一样。但是我如何通过编码来改变它呢?

我试过这样的方法:

holder.text.setTextColor(R.color.Red);

其中holder只是一个类,textTextView类型。红色是字符串中设置的RGB值(#FF0000)。

但是它显示的不是红色而是另一种颜色。我们可以在setTextColor()中传递什么样的参数?在文档中,它说int,但它是一个资源引用值还是其他什么?

1206793 次浏览

你应该使用:

holder.text.setTextColor(Color.RED);

当然,您可以使用Color类中的各种函数来获得相同的效果。

  • Color.parseColor (手动)(像LEX使用)

    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>
    

    因为getColor()函数已经弃用了1,你需要像这样使用它:

    ContextCompat.getColor(context, R.color.your_color);
    
  • You can also insert plain HEX, like so:

    myTextView.setTextColor(0xAARRGGBB);
    

    首先是alpha通道,然后是颜色值。

当然,请查看完整的手册公共类Color extends对象 .


# eyz0这个代码过去也在这里:

textView.setTextColor(getResources().getColor(R.color.errorColor));

这个方法现在在Android m中被弃用了,但是你可以从支持库中的contextCompat中使用它,就像现在的例子所显示的那样。

你可以使用

holder.text.setTextColor(Color.rgb(200,0,0));

你也可以用透明度指定你想要的颜色。

holder.text.setTextColor(Color.argb(0,200,0,0));

a代表(透明)值r-红g-绿b-蓝

如果你仍然想在XML文件中指定颜色:

<color name="errorColor">#f00</color>

然后在代码中使用以下两个方法之一引用它:

textView.setTextColor(getResources().getColor(R.color.errorColor, getResources().newTheme()));

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

第一个可能是可取的,如果你编译针对Android M,但你传递的主题可以为空,所以也许这对你更容易?

如果你在使用Compat库,你可以这样做

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));

我相信如果你想指定一个颜色作为资源(在XML文件中),你必须提供它的ARGB值(不仅仅是RGB值)。

尝试将颜色值更改为#FFFF0000。它应该给你红色。

还有一个:

TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));

使用:

TextView tv = new TextView(this);
tv.setTextColor(Color.rgb(285,0,0));

如果您计划使用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));

我通常对任何视图都这样做:

myTextView.setTextColor(0xAARRGGBB);

在哪里

  • AA定义alpha(00为透明,FF为不透明)

  • RRGGBB定义了正常的HTML颜色代码(如FF0000表示红色)。

在适配器中,您可以使用以下代码设置文本颜色:

holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));

使用适配器,您可以使用以下代码设置文本颜色:

holder.text_view = (TextView) convertView.findViewById(R.id.text_view);
holder.text_view.setTextColor(Color.parseColor("#FF00FF"));
   textViewStatus.setTextColor(res.getColor(R.color.green));
holder.text.setTextColor(Color.rgb(200,0,0));

myTextView.setTextColor(0xAARRGGBB);

类似地,我使用color.xml:

<color name="white">#ffffff</color>
<color name="black">#000000</color>

设置TextView背景如下:

textView.setTextColor(R.color.white);

我得到了一个不同的颜色,但当我使用下面的代码,我得到了实际的颜色。

textView.setTextColor(Color.parseColor("#ff6363"));

如果你想给颜色代码直接使用

textView.setTextColor(Color.parseColor("#ffffff"));

或者如果你想给颜色代码从颜色文件夹然后使用

textView.setTextColor(R.color.white);

提供rgb值:text.setTextColor(Color.rgb(200,0,0));
从十六进制值解析颜色: # EYZ0 < / p >

您可以使用textView.setTextColor(Color.BLACK)来使用Color类的任何内置颜色。

您还可以使用textView.setTextColor(Color.parseColor(hexRGBvalue))来定义自定义颜色。

我是这样做的: 在res/values文件夹中创建一个名为Colors的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));

希望能有所帮助。

在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" />

尝试使用以下代码:

holder.text.setTextColor(Color.parseColor("F00"));

为了设置一个TextView的颜色,TextView.setTextColor(R.color.YOURCOLOR)是不够的!

它必须像这样使用-

TextView myText = (TextView) findViewById(R.id.YoutTextViewID);


myText.setTextColor(getResources().getColor(R.color.YOURCOLOR);

myText.setTextColor(Color.parseColor("#54D66A"));

如果你在适配器中,仍然想使用在资源中定义的颜色,你可以尝试以下方法:

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);
holder.userType.setTextColor(context.getResources().getColor(
R.color.green));

在文本视图中设置颜色有很多不同的方法。

  1. 在studio res->values->colors.xml中添加颜色值as

    <color name="color_purple">#800080</color>
    

    现在在xml或活动类中设置颜色为

    text.setTextColor(getResources().getColor(R.color.color_purple)
    
  2. If you want to give color code directly use below Color.parseColor code

    textView.setTextColor(Color.parseColor("#ffffff"));
    
  3. You can also use RGB

    text.setTextColor(Color.rgb(200,0,0));
    
  4. Use can also use direct hexcode for textView. You can also insert plain HEX, like so:

    text.setTextColor(0xAARRGGBB);
    
  5. You can also use argb with alpha values.

       text.setTextColor(Color.argb(0,200,0,0));
    

    a for Alpha (Transparent) v.

  6. 如果你正在使用Compat库,你可以这样做

       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));
    
text1.setTextColor(Color.parseColor("#000000"));

getColor()被禁用

所以试试这个方法:

 tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));

我这样做的一个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));
}

希望这能帮助到一些人。

TextView text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

以上代码在我这边工作。这里text是需要设置颜色的TextView

从API 23开始,getResources().getColor()已弃用。

用这个代替:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));
textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite));

colors.xml文件中,输入以下代码:

<color name="colorWhite">#FFFFFF</color>

text.setTextColor(getResource().getColor(R.color.black))你已经创建了黑色的color.xml。

text.setTextColor(Color.parseColor("#000000"))在这里输入所需的十六进制代码

text.setTextColor(Color.BLACK)你可以使用静态颜色字段

试试这个:

textView.setTextColor(getResources().getColor(R.color.errorColor, null));

试试这个:

TextView textview = (TextView) findViewById(R.id.textview );
textview .setTextColor(Color.parseColor("#85F85F"));

Kotlin扩展解决方案

添加这些可以使更改文本颜色更简单

用于设置ColorInt

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)
}
TextView color= (TextView)findViewById(R.id.color);
text.setTextColor(Color.RED);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
b.numberDay1.setTextColor(ContextCompat.getColor(requireContext(), R.color.secondary_100))
} else {
b.numberDay1.setTextColor(resources.getColor(R.color.secondary_100))
}

如果你使用芬兰湾的科特林,有4种方法:(与Holder)

  1. < p >使用# EYZ0:

    holder.textView.setTextColor (Color.GREEN)

  2. < p >使用# EYZ0:

    holder.textView.setTextColor(颜色。Rgb (255, 87, 34))

3)使用# EYZ0:

holder.textView.setTextColor(Color.parseColor("#C2185B"))

4)使用项目资源:(需要API级别23)

holder.textView.setTextColor(context.resources.getColor(R.color.colorMax,null))