Estou procurando uma maneira de mudar a cor de um texto de uma única palavra TextView
de dentro de um Activity
.
Por exemplo, com este:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Como eu mudaria a cor do next
texto para vermelho?
Respostas:
A maneira mais fácil que conheço é apenas usar html.
Mas isso exigirá que você reconstrua o TextView quando (se?) Quiser alterar a cor, o que pode causar problemas.
fonte
fromHtml
está obsoleto agoraHtml.fromHtml
está obsoleto. Essa solução funcionou para mim!você tem que usar o spannable isso também permite que você aumente o tamanho do texto, torne-o em negrito etc .... até mesmo coloque alguma imagem.
fonte
SpannableString
objeto usando aTextFormatted
propriedade do seu controle.java.lang.String cannot be cast to android.text.Spannable
erro.Use SpannableStringBuilder assim:
fonte
new ForegroundColorSpan(Color)
para que o texto mantenha a cor padrão original?para string longa, você pode usar isto:
fonte
Se você quiser alterar o estado de todas as instâncias de um específico
String
dentro de umTextView
texto (maiúsculas e minúsculas) que você pode usarStringBuilder
s eSpannableString
como isto:}
TextView
texto dentro de umStringBuilder
.StringBuilder
.TextView
texto dentro de umSpannableString
String
instâncias dentro doTextView
texto e alterá-las quando alcançadas.TextView
paraSpannableString
.fonte
Implementei uma função de utilidade no Kotlin para meu próprio caso de uso e talvez útil para outra pessoa.
Como estou usando:
fonte
USAR:
Função:
fonte
Eu acho que isso é mais legível para colorir uma palavra em uma string e também provavelmente um pouco mais eficiente porque você escreve uma vez
fonte