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

我试过这样的方法:

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

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

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


当前回答

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

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

其他回答

textView.setTextColor(ContextCompat.getColor(getApplicationC‌​ontext(),R.color.col‌​orWhite)); 

在colors.xml文件中,输入如下代码:

<color name="colorWhite">#FFFFFF</color>

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

holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) { 
    b.numberDay1.setTextColor(ContextCompat.getColor(requireContext(), R.color.secondary_100))
} else {                
    b.numberDay1.setTextColor(resources.getColor(R.color.secondary_100))
}

Use:

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

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