2012-04-13 28 views

Respuesta

79

Puede usar Spannable para lograr lo que desea.

String text = "This is <font color='red'>red</font>. This is <font color='blue'>blue</font>."; 
textView.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE); 
+0

Gracias hombre esto funcionó. –

+0

¿podemos establecer de manera similar el fondo de una parte del texto? – AndroidMechanic

+2

También puede poner esta cadena en strings.xml (pero debe rodearlo con ''). Luego configura la cadena como lo que dijo, pero no necesita TextView.BufferType.SPANNABLE para eso. – Fire3galaxy

6

Lo que básicamente quiere decir SpannableString

Ver this para el ejemplo completo:

+0

Gracias SpannableStrings lo resolvió. –

+0

Sí, he comprobado el que he usado :) Pero muchas gracias, solo puedo elegir uno. –

67

tratan de esta manera

TextView tv = (TextView)findViewById(R.id.tv); 

    Spannable wordtoSpan = new SpannableString("I know just how to whisper, And I know just how to cry,I know just where to find the answers");   
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.BLUE), 15, 30, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    wordtoSpan.setSpan(new ForegroundColorSpan(Color.RED), 5, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    tv.setText(wordtoSpan); 
+0

OP ya dijo que no sabe cuántas palabras habrá en el texto, lo que descarta cualquier tipo de solución usando posiciones codificadas. – tbm

+0

@tbm Acabo de sugerir una solución simple y basándonos en ella podemos hacer una dinámica como la de la oración "Hola", la palabra debe mostrarse en color rojo, la palabra "Adiós" en color azul y así sucesivamente y para esto tenemos que conseguir posición dinámica y que podemos agregar nuestra lógica basada en ella. – Khan

+2

@tbm, entonces no los codifique con dificultad, calcúlelos sobre la marcha. Me gusta esta respuesta. –