如何在代码中设置TextView的文本颜色?
在XML中,我们可以通过textColor
属性设置文本颜色,如android:textColor="#FF0000"
。 但是,如何通过编码来改变它呢?
我尝试了这样的:
holder.text.setTextColor(R.color.Red);
holder
只是一个类, text
是TextView
类型。 红色是在字符串中设置的RGB值(#FF0000)。
但它显示不同的颜色,而不是红色。 我们可以在setTextColor()中传递什么样的参数? 在文档中,它表示int
,但它是一个资源参考值或其他任何东西?
你应该使用:
holder.text.setTextColor(Color.RED);
为了理智检查,我只是试了一下,因为我有一个项目打开,是的,这是好的,红色的; D
您可以使用Color
类中的各种函数来获得相同的效果。
-
Color.parseColor
(手动) (如LEX使用)text.setTextColor(Color.parseColor("#FFFFFF"));
-
Color.rgb
和Color.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相反,顺序是任意的。
在文本视图中设置颜色的方法有很多种。
-
在studio res-> values-> colors.xml中添加颜色值
<color name="color_purple">#800080</color>
现在将颜色设置为xml或actvity类
text.setTextColor(getResources().getColor(R.color.color_purple)
-
如果你想直接使用Color.parseColor代码给颜色代码
textView.setTextColor(Color.parseColor("#ffffff"));
-
你也可以使用RGB
text.setTextColor(Color.rgb(200,0,0));
-
使用也可以使用textView的直接十六进制代码。 你也可以插入普通十六进制,如下所示:
text.setTextColor(0xAARRGGBB);
-
你也可以使用带有alpha值的argb。
text.setTextColor(Color.argb(0,200,0,0));
一个阿尔法(透明)v。
-
如果你使用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"));