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

我试过这样的方法:

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

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

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


当前回答

如果你想给颜色代码直接使用

textView.setTextColor(Color.parseColor("#ffffff"));

或者如果你想给颜色代码从颜色文件夹然后使用

textView.setTextColor(R.color.white);

其他回答

类似地,我使用color.xml:

<color name="white">#ffffff</color>
    <color name="black">#000000</color>   

设置TextView背景如下:

textView.setTextColor(R.color.white);

我得到了一个不同的颜色,但当我使用下面的代码,我得到了实际的颜色。

textView.setTextColor(Color.parseColor("#ff6363"));

如果你仍然想在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 text = new TextView(context);
text.setTextColor(Color.parseColor("any hex value of a color"));

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

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

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

我是这样做的: 创建一个名为Colors in res/values文件夹的XML文件。

我的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对象。我不是从一个活动使用它,而是从一个BaseAdapter到一个ListView。这就是我使用Context对象的原因。

valor.setTextColor(ctx.getResources().getColor(R.color.azul_credito));

希望能有所帮助。