如何在程序中设置TextView的文本颜色?

348

如何通过编程将TextView的文本颜色设置为#bdbdbd


关于在代码中调整用户界面的注释,请考虑在设计时间内查看用户界面以最小化运行时的更改。 - AlikElzin-kilaka
使用 textView.setTextColor(textView.getContext().getColor(R.color.white)); 将文本设置为白色或在 colors.xml 中指定的任何其他颜色。 - Ola Ström
4个回答

855

请使用 git branch 创建一个新的分支:

Color.parseColor("#bdbdbd");

就像这样,

mTextView.setTextColor(Color.parseColor("#bdbdbd"));
如果您已经在资源的color.xml文件中定义了颜色代码,那么(从API >= 23开始)
mTextView.setTextColor(ContextCompat.getColor(context, R.color.<name_of_color>));

(针对 API < 23)

mTextView.setTextColor(getResources().getColor(R.color.<name_of_color>));

7
为什么不使用 0xFFBDBDBD - Rudey
7
Color.parseColor("#FFBDBDBD") 同样有效。 - macio.Jun
我必须包含alpha才能通过。所以,使用“#ffbdbdbd”而不是“#bdbdbd”。 - Alt-Cat

260

很好的答案。在此补充一个选项它可以从Android资源XML中加载颜色,但仍可以通过编程方式设置:

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

请注意,从API 23开始,getResources().getColor()已被弃用。请改用以下方法:

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

所需颜色在xml中定义为:

<resources>
  <color name="some_color">#bdbdbd</color>
</resources>

更新:

这种方法在API 23级中被弃用。请改用getColor(int, Theme)。

查看此链接


谢谢,我在设置 Holo 颜色时遇到了一些问题,例如 tv.setTextColor(color.holo_green_light)。文本显示不出来。所以我在 XML 中将颜色设置为资源,如 @android:color/holo_green_light,然后通过编程方式设置它。 - RTF
8
自API 23起,get.Color()已经被弃用。 请改用ContextCompat.getColor(context, R.color.color_name)。 - Rami

39
yourTextView.setTextColor(color);

或者,在你的情况下:yourTextView.setTextColor(0xffbdbdbd);


1
0xff 是什么意思?setTextColor(0xffbdbdbd)setTextColor(Color.parseColor("#bdbdbd")) 有什么区别? - mrid
2
0xFFBDBDBD是一个整数的十六进制表示,其中不同的部分代表了alpha、红、绿和蓝的数量(0xAARRGGBB)(0xff表示alpha完全为白色-也就是说,没有透明度)。当传入函数parseColor时,"#bdbdbd"是一个被解析为相同整数的字符串。 - Jave
当您有4个字节来定义颜色时,第一个字节指的是颜色中的alpha通道,即颜色的透明度,其余的字节指的是红色、绿色和蓝色;因此,当您有0xffbdbdbd时,它是aRGB格式,而没有前两个ff则是RGB格式。另外,当您执行Color.parseColor("#bdbdbd")时,这将把十六进制格式的字符串“#bdbdbd”转换为一个整数,该整数等同于0xbdbdbd(十六进制)=> 12434877(十进制)。 - alexscmar

28
TextView tt;
int color = Integer.parseInt("bdbdbd", 16)+0xFF000000;
tt.setTextColor(color);

同样也

tt.setBackgroundColor(Integer.parseInt("d4d446", 16)+0xFF000000);

同样也

tt.setBackgroundColor(Color.parseColor("#d4d446"));

参见:

Java/Android 字符串转颜色


@ashish.n,像这样的更改应该作为新答案发布,我会让Marek决定是否要回滚。 - OGHaza
1
@OGHaza,感谢您的通知,我会允许那个编辑。 - Marek Sebera

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接