Como definir a cor do texto do TextView no código?


544

Em XML, podemos definir uma cor de texto pelo textColoratributo, como android:textColor="#FF0000". Mas como eu o altero codificando?

Eu tentei algo como:

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

Onde holderé apenas uma classe e texté do tipo TextView. Vermelho é um valor RGB (# FF0000) definido em seqüências de caracteres.

Mas mostra uma cor diferente e não vermelha. Que tipo de parâmetro podemos passar em setTextColor ()? Na documentação, ele diz int, mas é um valor de referência de recurso ou qualquer outra coisa?


Uma observação sobre como ajustar a interface do usuário no código, considere as vantagens de ver a interface do usuário no tempo de design, minimizando ao mínimo as alterações no tempo de execução.
— AlikElzin-kilaka

Respostas:


1245

Você deveria usar:

holder.text.setTextColor(Color.RED);

Você pode usar várias funções da Colorclasse para obter o mesmo efeito, é claro.

  • Color.parseColor (Manual) (como o LEX usa)

    text.setTextColor(Color.parseColor("#FFFFFF"));
  • Color.rgbe Color.argb( rgb manual ) ( argb manual ) (como o Ganapathy usa)

    holder.text.setTextColor(Color.rgb(200,0,0));
    holder.text.setTextColor(Color.argb(0,200,0,0));
  • E, claro, se você deseja definir sua cor em um XMLarquivo, você pode fazer o seguinte:

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

    porque a getColor()função está obsoleta 1 , você precisa usá-la da seguinte maneira:

    ContextCompat.getColor(context, R.color.your_color);
  • Você também pode inserir HEX simples, da seguinte maneira:

    myTextView.setTextColor(0xAARRGGBB);

    Onde você tem um canal alfa primeiro, depois o valor da cor.

Confira o manual completo, é claro, a classe pública Color estende Object .


1 Esse código costumava estar aqui também:

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

Agora, esse método está obsoleto no Android M. Você pode usá-lo no contextCompat na biblioteca de suporte , como mostra o exemplo agora.


2
Além disso, se o texto for um link, você precisará usar text.setLinkTextColor (...); no código ou no android: textColorLink = "..." em XML
— WOUNDEDStevenJones

1
@ Nanne Seria bom se sua resposta também mencionasse que R.color.XXX é uma referência à cor. Significando que ele precisa ser desreferenciado (como no seu exemplo), para maior clareza.
— Nyaray 14/08

Eu não tenho certeza do que você quer dizer? Por exemplo, desreferenciado e, portanto, usará mais recursos ou você quer dizer outra coisa?
— Nanne15 de

Existe alguma maneira de saber se um determinado valor de cor permitirá que um texto desapareça?
— precisa

6
getColor(int)está obsoleto.
— RestInPeace 28/11

137

Se você ainda deseja especificar suas cores no seu arquivo XML:

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

Em seguida, referencie-o no seu código com um destes dois métodos:

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

ou

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

O primeiro provavelmente é preferível se você estiver compilando com o Android M; no entanto, o tema que você transmite pode ser nulo; talvez seja mais fácil para você?

E se você estiver usando a biblioteca Compat, poderá fazer algo assim

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

9
Para setTextColor, por que ele precisa usar getResources (). GetColor () em vez da referência direta R.color.errorColor? O R.color.x funciona para quase todos os outros métodos. Incrivelmente frustrante!
— Civil

8
@ Civil: como o parâmetro int exigido pelos métodos setXXXColor () é considerado o valor ARGB real a ser usado, NÃO o valor a ser pesquisado no arquivo de recursos. Estranhamente, a classe View possui setBackgroundColor () e setBackgroundResource (), enquanto o TextView está ausente no método setTextResource ().
— Ian Kemp

1
getColor(int)está obsoleto. ContextCompat.getColor(getContext(), R.color.yourColor);parece ser o substituto.
— RestInPeace 28/11

45

E um outro:

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

1
getResources()é uma função de membro do contexto. Para adaptadores, use getContext().getResources(). Os valores das cores devem entrar em recursos, como na resposta do @ xbakesx.
— C0D3LIC1OU5

40

Você pode fazer isso apenas de um arquivo XML também.

Crie um color.xmlarquivo na pasta valores:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="textbody">#ffcc33</color>

</resources>

Em qualquer arquivo XML, você pode definir a cor do texto usando,

android:textColor="@color/textbody"

Ou você pode usar esta cor em um arquivo Java:

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

27

Você pode usar

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

Você também pode especificar a cor que deseja com Transparência.

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

a para valor Alpha (transparente) r-vermelho g-verde b-azul


15

use o seguinte código em layout.xml

<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" />

15

Existem muitas maneiras diferentes de definir cores na exibição de texto.

  1. Adicione o valor da cor em res-> valores-> colors.xml do estúdio como

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

    Agora defina a cor na classe xml ou actvity como

    text.setTextColor(getResources().getColor(R.color.color_purple)
  2. Se você deseja fornecer um código de cor, use diretamente o código abaixo Color.parse

    textView.setTextColor(Color.parseColor("#ffffff"));   
  3. Você também pode usar RGB

    text.setTextColor(Color.rgb(200,0,0));
  4. O uso também pode usar o código hexadecimal direto para o textView. Você também pode inserir HEX simples, da seguinte maneira:

    text.setTextColor(0xAARRGGBB);
  5. Você também pode usar argb com valores alfa.

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

    a para Alpha (transparente) v.

  6. E se você estiver usando a biblioteca Compat, poderá fazer algo assim

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

9

Eu normalmente faço isso para quaisquer visualizações:

myTextView.setTextColor(0xAARRGGBB);

Onde

  • AA define alfa (00 para transparente, FF para opaco)

  • RRGGBB define o código de cores HTML normal (como FF0000 para vermelho).


E por que o voto negativo? Você pode adicionar algumas idéias sobre isso, por favor?
— AW

7

Se você planeja usar o setTextAppearance , saiba que ele substituirá a cor do texto pelo estilo herdado do tema. Portanto, se você quiser usar os dois, defina a cor posteriormente .

Isso funciona:

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

Embora isso faça com que a cor do seu texto seja, por exemplo, branca (para o tema escuro) ou preta (para o tema claro):

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

Ao contrário disso, em XML, a ordem é arbitrária.


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

No colors.xmlarquivo, escreva o código abaixo:

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

6

Acredito que se você quiser especificar uma cor como um recurso (no arquivo XML ), precisará fornecer seu valor ARGB (não apenas o valor RGB).

Tente alterar o valor da cor para #FFFF0000. Deve dar-lhe vermelho.


a minha experiência, isso não é verdade e é possível usar um valor RGB em vez de um valor ARGB
— slinden77

6

text.setTextColor(getResource().getColor(R.color.black)) você criou a cor preta em color.xml.

OU

text.setTextColor(Color.parseColor("#000000")) aqui digite o código hexadecimal desejado

OU

text.setTextColor(Color.BLACK) você pode usar campos de cores estáticos


5

Usar:

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

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

ou

myTextView.setTextColor(0xAARRGGBB);

4

Usando o Adapter, você pode definir a cor do texto usando este código:

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

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

O código acima está funcionando do meu lado. Aqui textestá um TextView no qual a cor é necessária para ser definida.



2

A partir da API 23, getResources().getColor()foi preterido.

Use isto:

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

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

1

No adaptador, você pode definir a cor do texto usando este código:

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

1

Se você deseja fornecer o código de cores diretamente, use

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

ou se você deseja fornecer o código de cores da pasta colors, use

textView.setTextColor(R.color.white);

esse código textView.setTextColor (R.color.white); não funciona Você poderia usar text.setTextColor (getResources () getColor (R.color.color_purple) para obter a cor do seu color.xml.
— Gian Gomen

1

Para definir a cor de um TextView, TextView.setTextColor(R.color.YOURCOLOR)não basta!

Tem que ser usado assim -

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

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

OU

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

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

0

Da mesma forma, eu estava usando color.xml:

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

Para definir o TextViewplano de fundo como:

textView.setTextColor(R.color.white);

Eu estava recebendo uma cor diferente, mas quando usei o código abaixo, obtive a cor real.

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

0

Eu fiz desta maneira: Crie um arquivo XML, chamado Colors na pasta res / values.

My 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>

Para obter essas cores do arquivo xml, usei este código: valor é um TextView e ctx é um objeto Context. Não o estou usando de uma Activity, mas de um BaseAdapter para um ListView. É por isso que eu usei esse objeto de contexto.

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

Espero que ajude.


0

Para fornecer valores rgb: text.setTextColor(Color.rgb(200,0,0));
Para analisar a cor a partir de um valor hexadecimal: text.setTextColor(Color.parseColor("#FFFFFF"));


0

Se você estiver em um adaptador e ainda desejar usar uma cor definida nos recursos, tente a seguinte abordagem:

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

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

0

getColor () está obsoleto

Então tente desta maneira:

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

0

Eu estava fazendo isso para um TextView em um ViewHolder para um RecyclerView. Não sei por que, mas não funcionou para mim na inicialização do ViewHolder.

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

Mas quando mudei para o onBindViewHolder, funcionou bem.

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

Espero que isso ajude alguém.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.