Em XML, podemos definir uma cor de texto pelo textColor
atributo, 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?
Respostas:
Você deveria usar:
Você pode usar várias funções da
Color
classe para obter o mesmo efeito, é claro.Color.parseColor
(Manual) (como o LEX usa)Color.rgb
eColor.argb
( rgb manual ) ( argb manual ) (como o Ganapathy usa)E, claro, se você deseja definir sua cor em um
XML
arquivo, você pode fazer o seguinte:porque a
getColor()
função está obsoleta 1 , você precisa usá-la da seguinte maneira:Você também pode inserir HEX simples, da seguinte maneira:
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:
Agora, esse método está obsoleto no Android M. Você pode usá-lo no contextCompat na biblioteca de suporte , como mostra o exemplo agora.
fonte
getColor(int)
está obsoleto.Se você ainda deseja especificar suas cores no seu arquivo XML:
Em seguida, referencie-o no seu código com um destes dois métodos:
ou
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
fonte
getColor(int)
está obsoleto.ContextCompat.getColor(getContext(), R.color.yourColor);
parece ser o substituto.E um outro:
fonte
getResources()
é uma função de membro do contexto. Para adaptadores, usegetContext().getResources()
. Os valores das cores devem entrar em recursos, como na resposta do @ xbakesx.Você pode fazer isso apenas de um arquivo XML também.
Crie um
color.xml
arquivo na pasta valores:Em qualquer arquivo XML, você pode definir a cor do texto usando,
Ou você pode usar esta cor em um arquivo Java:
fonte
Você pode usar
Você também pode especificar a cor que deseja com Transparência.
a para valor Alpha (transparente) r-vermelho g-verde b-azul
fonte
use o seguinte código em layout.xml
fonte
Existem muitas maneiras diferentes de definir cores na exibição de texto.
Adicione o valor da cor em res-> valores-> colors.xml do estúdio como
Agora defina a cor na classe xml ou actvity como
Se você deseja fornecer um código de cor, use diretamente o código abaixo Color.parse
Você também pode usar RGB
O uso também pode usar o código hexadecimal direto para o textView. Você também pode inserir HEX simples, da seguinte maneira:
Você também pode usar argb com valores alfa.
a para Alpha (transparente) v.
E se você estiver usando a biblioteca Compat, poderá fazer algo assim
fonte
Eu normalmente faço isso para quaisquer visualizações:
Onde
AA define alfa (00 para transparente, FF para opaco)
RRGGBB define o código de cores HTML normal (como FF0000 para vermelho).
fonte
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:
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):
Ao contrário disso, em XML, a ordem é arbitrária.
fonte
No
colors.xml
arquivo, escreva o código abaixo:fonte
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.fonte
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 desejadoOU
text.setTextColor(Color.BLACK)
você pode usar campos de cores estáticosfonte
Usar:
fonte
ou
fonte
Usando o Adapter, você pode definir a cor do texto usando este código:
fonte
O código acima está funcionando do meu lado. Aqui
text
está um TextView no qual a cor é necessária para ser definida.fonte
fonte
A partir da API 23,
getResources().getColor()
foi preterido.Use isto:
fonte
fonte
No adaptador, você pode definir a cor do texto usando este código:
fonte
Se você deseja fornecer o código de cores diretamente, use
ou se você deseja fornecer o código de cores da pasta colors, use
fonte
Para definir a cor de um TextView,
TextView.setTextColor(R.color.YOURCOLOR)
não basta!Tem que ser usado assim -
OU
fonte
fonte
Da mesma forma, eu estava usando
color.xml
:Para definir o
TextView
plano de fundo como:Eu estava recebendo uma cor diferente, mas quando usei o código abaixo, obtive a cor real.
fonte
Eu fiz desta maneira: Crie um arquivo XML, chamado Colors na pasta res / values.
My Colors.xml:
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.
Espero que ajude.
fonte
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"));
fonte
Se você estiver em um adaptador e ainda desejar usar uma cor definida nos recursos, tente a seguinte abordagem:
fonte
fonte
getColor () está obsoleto
Então tente desta maneira:
fonte
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.
Mas quando mudei para o onBindViewHolder, funcionou bem.
Espero que isso ajude alguém.
fonte