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

我试过这样的方法:

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

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

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


当前回答

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

它必须像这样使用-

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

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

OR

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

其他回答

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

你应该使用:

holder.text.setTextColor(Color.RED);

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

Color.parseColor (Manual) (like LEX uses) 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> because the getColor() function is deprecated1, you need to use it like so: ContextCompat.getColor(context, R.color.your_color); You can also insert plain HEX, like so: myTextView.setTextColor(0xAARRGGBB); Where you have an alpha-channel first, then the color value.

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


这段代码以前也在这里:

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

or

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

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

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

textView.setTextColor(ContextCompat.getColor(context, R.color.errorColor));
TextView textresult = (TextView)findViewById(R.id.textView1);
textresult.setTextColor(Color.GREEN);

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

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