Estoy buscando una forma de cambiar el color de un texto de una sola palabra en un TextViewdesde dentro de un Activity.
Por ejemplo, con esto:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
¿Cómo cambiaría el color del nexttexto a rojo?

Respuestas:
La forma más fácil que conozco es simplemente usar html.
Pero esto requerirá que reconstruya el TextView cuando (¿si?) Desee cambiar el color, lo que podría causar problemas.
fuente
fromHtmlestá obsoleto ahoraHtml.fromHtmles obsoleto. ¡Esta solución funcionó para mí!tienes que usar spannable, esto también te permitirá aumentar el tamaño del texto, ponerlo en negrita, etc. incluso poner una imagen.
fuente
SpannableStringobjeto utilizando laTextFormattedpropiedad de su control.java.lang.String cannot be cast to android.text.Spannableerror.Utilice SpannableStringBuilder así:
fuente
new ForegroundColorSpan(Color)para que el texto conserve su color predeterminado original?para una cadena larga, puede usar esto:
fuente
Si desea cambiar el estado de todas las instancias de un específico
Stringdentro de unTextViewtexto (no distingue entre mayúsculas y minúsculas), puede usarStringBuilders ySpannableStringasí:}
TextViewtexto dentro de unStringBuilder.StringBuilder.TextViewtexto completo dentro de unSpannableStringStringinstancias dentro delTextViewtexto y cámbielas cuando llegue.TextViewenSpannableString.fuente
Implementé una función de utilidad en Kotlin para mi propio caso de uso y tal vez sea útil para otra persona.
Cómo lo estoy usando:
fuente
UTILIZAR:
Función:
fuente
Creo que esto es más legible para colorear una palabra en una cadena, probablemente también sea un poco más eficiente porque escribes una vez
fuente