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

613
在XML中,我们可以通过textColor属性设置文本颜色,例如android:textColor="#FF0000"。但是我该如何通过编码来更改它呢?
我尝试了以下内容:
holder.text.setTextColor(R.color.Red);

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

但它显示的颜色与红色不同。 我们可以在 setTextColor() 中传递什么参数? 在文档中,它说是 int,但它是资源引用值还是其他任何东西?


关于在代码中调整用户界面的注意事项,请考虑在设计时查看用户界面的优点,将运行时更改最小化。 - AlikElzin-kilaka
40个回答

7
如果您计划使用 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中顺序是任意的。

6
我认为如果您想在XML文件中指定颜色资源,则必须提供其ARGB值(而不仅仅是RGB值)。
尝试将您的颜色值更改为#FFFF0000。它应该会给你红色。

根据我的经验,这并不是真的,可以使用RGB值而不是ARGB值。 - slinden77

5

使用:

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

5

Kotlin扩展解决方案

添加以下内容可使更改文本颜色更加简单

用于设置ColorInt

myView.textColor = Color.BLACK // or Color.parseColor("#000000"), etc.

var TextView.textColor: Int
get() = currentTextColor
set(@ColorInt color) {
    setTextColor(color)
}

设置 ColorRes


myView.setTextColorRes(R.color.my_color)

fun TextView.setTextColorRes(@ColorRes colorRes: Int) {
    val color = ContextCompat.getColor(context, colorRes)
    setTextColor(color)
}

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

或者

myTextView.setTextColor(0xAARRGGBB);

4

如果你使用的是Kotlin,有四种方式:(使用 Holder)

  1. 使用Android资源

    holder.textView.setTextColor(Color.GREEN)

  2. 使用RGB

    holder.textView.setTextColor(Color.rgb(255, 87, 34))

3)使用十六进制:

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

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

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

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

上述代码在我的环境下正常工作。这里的text是一个TextView,需要设置其颜色。

3
text1.setTextColor(Color.parseColor("#000000"));

明智地提问。 - Maveňツ

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

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

2

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

请改用以下方法代替:

textView.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.color_black));

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