关于android:如何在代码中设置TextView的文本颜色?

How to set the text color of TextView in code?

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

我尝试了如下方法:

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

其中holder只是一个类,textTextView型。红色是字符串中设置的RGB值(ff0000)。

但它的颜色不同于红色。在settextcolor()中我们可以传递什么类型的参数?在文档中,它表示int,但它是资源参考值还是其他值?


您应该使用:

1
holder.text.setTextColor(Color.RED);

为了做一个健康检查,我试了一下,因为我有一个项目一直在开着,是的,它很漂亮,很红。

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

  • Color.parseColor(手动)(如lex使用)

    1
    text.setTextColor(Color.parseColor("#FFFFFF"));

  • Color.rgbColor.argb(手动rgb)(手动argb)(如ganapathy用途)

    1
    2
    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
  • 当然,如果要在XML文件中定义颜色,可以这样做:

    1
    <color name="errorColor">#f00</color>

    由于getColor()函数被弃用1,因此您需要这样使用它:

    1
    ContextCompat.getColor(context, R.color.your_color);
  • 也可以插入普通的十六进制,如:

    1
    myTextView.setTextColor(0xAARRGGBB);

    首先是alpha通道,然后是颜色值。

查看完整的手册当然,公共类颜色扩展对象。

1该代码也曾出现在这里:

1
textView.setTextColor(getResources().getColor(R.color.errorColor));

这个方法现在在android m中已被弃用。但是,您可以从支持库的contextcompat中使用它,如下面的示例所示。


如果仍要在XML文件中指定颜色:

1
<color name="errorColor">#f00</color>

然后用以下两种方法之一在代码中引用它:

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

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

如果您是针对android m编译的,那么第一个可能更好,但是您传递的主题可以是空的,所以这对您来说可能更容易?

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

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


另一个是:

1
2
TextView text = (TextView) findViewById(R.id.text);
text.setTextColor(Color.parseColor("#FFFFFF"));


您也只能从XML文件执行此操作。

在values文件夹中创建一个color.xml文件:

1
2
3
4
5
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

然后,在任何XML文件中,可以使用,

1
android:textColor="@color/textbody"

或者可以在Java文件中使用此颜色:

1
2
3
final TextView tvchange12 = (TextView) findViewById(R.id.textView2);
//Set color for textbody from color.xml file
tvchange1.setTextColor(getResources().getColor(R.color.textbody));


你可以用

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

还可以指定透明度所需的颜色。

1
holder.text.setTextColor(Color.argb(0,200,0,0));

a表示α(透明)值r-红色g-绿色b-蓝色


在文本视图上设置颜色有许多不同的方法。

  • 在studio res->values->colors.xml中添加颜色值

    1
    <color name="color_purple">#800080</color>

    现在将xml或actity类中的颜色设置为

    1
    text.setTextColor(getResources().getColor(R.color.color_purple)

  • 如果要直接给出颜色代码,请使用下面的color.parsecolor代码

    1
    textView.setTextColor(Color.parseColor("#ffffff"));
  • 您也可以使用RGB

    1
    text.setTextColor(Color.rgb(200,0,0));

  • 也可以使用直接十六进制代码进行文本视图。也可以插入普通的十六进制,如:

    1
    text.setTextColor(0xAARRGGBB);
  • 还可以将argb与alpha值一起使用。

    1
       text.setTextColor(Color.argb(0,200,0,0));

    A代表α(透明)V。

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

    1
       text.setTextColor(ContextCompat.getColor(context, R.color.color_purple));


  • 在layout.xml中使用以下代码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <TextView  android:id="@+id/textView1"    
    android:layout_width="wrap_content"    
    android:layout_height="wrap_content"
    android:text="@string/add"
    android:layout_marginTop="16dp"
    android:textAppearance="?
    android:attr/textAppearanceMedium"
    android:textColor="#25383C"
    android:textSize="13sp" />

    <TextView
            android:id="@+id/textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/add"
            android:layout_marginTop="16dp"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:textColor="#25383C"
            android:textSize="13sp" />


    我通常对任何视图执行此操作:

    1
    myTextView.setTextColor(0xAARRGGBB);

    哪里

    • aa定义alpha(00表示透明,ff表示不透明)

    • rrggbb定义了普通的HTML颜色代码(比如红色的ff0000)。


    如果您计划使用setextappearance,您应该知道它将使用从主题继承的样式覆盖文本颜色。因此,如果您想同时使用这两种颜色,请在之后设置颜色。

    这项工作:

    1
    2
    textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);
    textView.setTextColor(Color.RED);

    这将导致您的文本颜色为白色(用于深色主题)或黑色(用于浅色主题):

    1
    2
    textView.setTextColor(Color.RED);
    textView.setTextAppearance(context, android.R.style.TextAppearance_Medium);

    与此相反,在XML中,顺序是任意的。


    我相信,如果您想指定一种颜色作为资源(在XML文件中),就必须提供它的a rgb值(而不仅仅是rgb值)。

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


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

    1
    myTextView.setTextColor(0xAARRGGBB);


    用途:

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


    1
    textView.setTextColor(ContextCompat.getColor(getApplicationC??ontext(),R.color.col??orWhite));

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

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


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

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


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


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

    上面的代码在我这边工作。这里,text是需要设置颜色的文本视图。


    text.setTextColor(getResource().getColor(R.color.black))您已经在color.xml中创建了黑色。

    此处键入所需的十六进制码

    text.setTextColor(Color.BLACK)您可以使用静态颜色字段


    1
    2
    holder.userType.setTextColor(context.getResources().getColor(
                        R.color.green));

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

    改为使用:

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


    如果要直接给出颜色代码,请使用

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

    或者,如果要从"颜色"文件夹中提供颜色代码,请使用

    1
    textView.setTextColor(R.color.white);


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

    1
    2
    holder.my_text_view = (TextView) convertView.findViewById(R.id.my_text_view);
    holder.my_text_view.setTextColor(Color.parseColor("#FFFFFF"));


    1
       textViewStatus.setTextColor(res.getColor(R.color.green));


    为了设置文本视图的颜色,TextView.setTextColor(R.color.YOURCOLOR)是不够的!

    必须这样使用-

    1
    2
    3
    TextView myText = (TextView) findViewById(R.id.YoutTextViewID);

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

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


    我是这样做的:创建一个XML文件,在res/values文件夹中称为colors。

    我的颜色.xml:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        <?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文件获取此颜色,我使用了以下代码:它是一个文本视图,而CTX是一个上下文对象。我不是从活动中使用它,而是从baseadapter到listview。这就是我使用这个上下文对象的原因。

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

    希望有帮助。


    同样,我使用的是color.xml

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

    设置TextView背景,如:

    1
    textView.setTextColor(R.color.white);

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

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


    您可以使用textView.setTextColor(Color.BLACK)使用Color类的任何内置颜色。

    您还可以使用textView.setTextColor(Color.parseColor(hexRGBvalue))定义自定义颜色。


    试试这个:

    1
    2
    TextView textview = (TextView) findViewById(R.id.textview );
    textview .setTextColor(Color.parseColor("#85F85F"));


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

    1
    holder.text.setTextColor(holder.text.getContext().getResources().getColor(R.color.myRed));

    1
    2
    TextView textresult = (TextView)findViewById(R.id.textView1);
    textresult.setTextColor(Color.GREEN);


    getcolor()已取消接收

    所以请尝试以下方法:

    1
     tv_title.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.sf_white));


    我在为RecyclerView的一个视图夹中的一个文本视图执行此操作。我不太确定为什么,但在视窗初始化中它对我不起作用。

    1
    2
    3
    4
    5
    6
    public ViewHolder(View itemView) {
        super(itemView);
        textView = (TextView) itemView.findViewById(R.id.text_view);
        textView.setTextColor(context.getResources().getColor(R.color.myColor));
        // Other stuff
    }

    但是当我把它移到onbindViewholder时,它工作得很好。

    1
    2
    3
    4
    public void onBindViewHolder(ViewHolder holder, int position){
        // Other stuff
        holder.textView.setTextColor(context.getResources().getColor(R.color.myColor));
    }

    希望这能帮助别人。


    试试这个:

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

    提供RGB值:text.setTextColor(Color.rgb(200,0,0));。用于分析十六进制值的颜色:江户十一〔11〕。


    尝试使用以下代码:

    1
    holder.text.setTextColor(Color.parseColor("F00"));