text = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
activationText.setText(text);
myTextView.setText(text);
Quiero cambiar el color de CepVizyon.getPhoneCode()
la cadena de. ¿Cómo puedo hacer esto?
android
uitextview
textview
atasoyh
fuente
fuente
Respuestas:
Spannable es más flexible:
fuente
()
después,text.length
ya quelength
es un método, no un campo. Lo haría yo mismo, pero las ediciones deben tener al menos 6 caracteres :)Html.fromHtml(R.id.your_html_string);
fuente
Si tiene texto estático que necesita color, puede agregarlo sin ningún código a través del archivo de cadenas:
luego
resultado
No estoy seguro en qué versiones de API funciona, pero no funciona para la API 19 que he probado hasta ahora, por lo que probablemente solo algunas de las versiones de API más recientes admiten esto.
editar: como @hairraisin mencionó en los comentarios, intente usar en
fgcolor
lugar delcolor
color de la fuente, entonces debería funcionar para niveles de API más bajos, pero necesita más pruebas para estar segurofuente
<font fgcolor=...
API 15 y API 25 (aunque no probé específicamente 19)Con respecto a la respuesta de Maneesh, esto funcionará, pero debe agregar y escapar las comillas para el atributo de color.
fuente
¡Es bueno para mi!
fuente
Aquí la solución en Kotlin que se usa
SpannableString
para cambiar el color de parte de una cuerda.fuente
Aquí hay una
colorize
función basada en la respuesta de andyboot:fuente
No me gustó la idea de hacer esto por código cada vez que quiero colorear partes del texto que he estado haciendo mucho en todas mis aplicaciones (y dado que en algunos casos el texto se está configurando en tiempo de ejecución con diferentes líneas en línea) colores definidos) así que creé el mío
MarkableTextView
.La idea era:
Aquí está el proceso paso a paso:
Primero necesitaba una forma de encontrar etiquetas XML en una cadena determinada e
Regex
hice el truco.Para que lo anterior coincida con una etiqueta XML, debe tener los siguientes criterios:
<a>
<a >
<a-a>
<a ..attrs..>
pero no< a>
<1>
<a></a>
pero no<a></b>
Ahora, para los atributos, usaremos este ...
Tiene el mismo concepto y, en general, no tuve que ir muy lejos para ambos, ya que el compilador se encargará del resto si algo sale de formato.
Ahora necesitamos una clase que pueda contener los datos extraídos:
Antes que nada, vamos a agregar este interesante iterador que he estado usando durante mucho tiempo para recorrer las coincidencias (no recuerdo el autor) :
MarkableTextView:
Finalmente, estilo, aquí hay un modelador muy simple que hice para esta respuesta:
Y así
Markable
es como se ve la clase que contiene las definiciones:Todo lo que necesitamos ahora es hacer referencia a una cadena y básicamente debería verse así:
Asegúrese de envolver las etiquetas con un
CDATA Section
y escapar"
con\
.Hice esto como una solución modular para procesar partes del texto de diferentes maneras sin la necesidad de rellenar código innecesario detrás.
fuente
Hice lo que dijo Andy Boot, pero también tenía un intervalo en el que se podía hacer clic, y no funcionó porque
setSpans
se llamó a la orden . Por lo tanto, primero debe llamar al yspannable.setSpan(clickableSpanand...
luego alspannable.setSpan(new ForegroundColorSpan...
para obtener el color en TextViewfuente
He hecho esta pequeña función, solo pasa tu texto a color, los índices de inicio y final de lo que quieres colorear de ese texto y el color en sí
Kotlin
Uso
fuente
Con una función de extensión de Kotlin de propósito general, se vería así:
fuente
Utilice caracteres de escape + Html.fromHtml ()
Cómo almacenar la cadena en la carpeta de recursos de cadena
¿Cómo mostrar en TextView?
Prima:
La cadena en la salida se ve así
fuente
Una forma es dividirlos
myTextView
en unos pocosTextViews
, uno de los cuales sería solo para el código del teléfono. Entonces, controlar el color de este específicoTextView
es bastante sencillo.fuente