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

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

我尝试了这样的:

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

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

但它显示不同的颜色,而不是红色。 我们可以在setTextColor()中传递什么样的参数? 在文档中,它表示int ,但它是一个资源参考值或其他任何东西?

你应该使用:

 holder.text.setTextColor(Color.RED); 

为了理智检查,我只是试了一下,因为我有一个项目打开,是的,这是好的,红色的; D


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

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

     text.setTextColor(Color.parseColor("#FFFFFF")); 
  • Color.rgbColor.argb ( Manual rgb )( Manual argb )(如Ganapathy使用)

     holder.text.setTextColor(Color.rgb(200,0,0)); holder.text.setTextColor(Color.argb(0,200,0,0)); 
  • 当然,如果你想在XML文件中定义你的颜色,你可以这样做:

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

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

     ContextCompat.getColor(context, R.color.your_color); 
  • 你也可以插入普通HEX,就像这样:

     myTextView.setTextColor(0xAARRGGBB); 

    你首先有一个alpha通道,然后是颜色值。

查看当然完整的手册, 公共类Color extends Object


1这个代码也曾经在这里:

 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())); 

要么

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

第一个可能是最好的,如果你正在编译Android M,但是你传递的主题可以为null,所以也许这对你更容易?

如果你使用Compat库,你可以做这样的事情

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

还有一个:

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

您只能从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)); 

您可以使用

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

您还可以使用“透明度”指定所需的颜色。

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

a为Alpha (透明)值r-红色g-绿色b-蓝色

我通常这样做的任何意见:

 myTextView.setTextColor(0xAARRGGBB); 

哪里

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

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

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

如果您打算使用setTextAppearance ,则应该知道它将使用从主题继承的样式来覆盖文本颜色。 所以,如果你想使用两个, 之后设置颜色。

这工作:

 textView.setTextAppearance(context, android.R.style.TextAppearance_Medium); textView.setTextColor(Color.RED); 

虽然这会导致你的文本颜色为白色(黑色主题)或黑色(为主题):

 textView.setTextColor(Color.RED); textView.setTextAppearance(context, android.R.style.TextAppearance_Medium); 

与XML相反,顺序是任意的。

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

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

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

    现在将颜色设置为xml或actvity类

     text.setTextColor(getResources().getColor(R.color.color_purple) 
  2. 如果你想直接使用Color.parseColor代码给颜色代码

     textView.setTextColor(Color.parseColor("#ffffff")); 
  3. 你也可以使用RGB

     text.setTextColor(Color.rgb(200,0,0)); 
  4. 使用也可以使用textView的直接十六进制代码。 你也可以插入普通十六进制,如下所示:

     text.setTextColor(0xAARRGGBB); 
  5. 你也可以使用带有alpha值的argb。

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

    一个阿尔法(透明)v。

  6. 如果你使用Compat库,你可以做这样的事情

      text.setTextColor(ContextCompat.getColor(context, R.color.color_purple)); 

我相信,如果你想要指定一种颜色作为资源(在XML文件中),你将不得不提供其ARGB值(而不是简单的RGB值)。

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

holder.text.setTextColor(Color.rgb(200,0,0));
要么
myTextView.setTextColor(0xAARRGGBB);

使用:

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

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

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

text1.setTextColor(Color.parseColor( “#000000”));

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

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

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

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

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

 textView.setTextColor(R.color.white); 
  textViewStatus.setTextColor(res.getColor(R.color.green)); 

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

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

为了设置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.userType.setTextColor(context.getResources().getColor( R.color.green)); 

同样,我使用的是color.xml

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

为了设置TextView背景,像这样:

 textView.setTextColor(R.color.white); 

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

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

我这样做:创建一个XML文件,在res / values文件夹中称为颜色。

我的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对象。 我不是从一个Activity使用它,而是一个BaseAdapter到一个ListView。 这就是我使用这个上下文对象的原因。

 valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito)); 

希望它有帮助。

为了提供rgb值: text.setTextColor(Color.rgb(200,0,0));
用于从十六进制值中解析颜色: text.setTextColor(Color.parseColor("#FFFFFF"));

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

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

getColor()被取消

所以试试这个方法:

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

我正在做一个RecyclerView的ViewHolder中的TextView。 我不是很确定为什么,但在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.setTextColor(Color.BLACK)来使用Color类的任何内置颜色。

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

尝试使用以下代码:

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