Estoy buscando una forma de cambiar el color de un texto de una sola palabra en un TextView
desde 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 next
texto 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
fromHtml
está obsoleto ahoraHtml.fromHtml
es 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
SpannableString
objeto utilizando laTextFormatted
propiedad de su control.java.lang.String cannot be cast to android.text.Spannable
error.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
String
dentro de unTextView
texto (no distingue entre mayúsculas y minúsculas), puede usarStringBuilder
s ySpannableString
así:}
TextView
texto dentro de unStringBuilder
.StringBuilder
.TextView
texto completo dentro de unSpannableString
String
instancias dentro delTextView
texto y cámbielas cuando llegue.TextView
enSpannableString
.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