13mar/14

Texto con formato de fuente

Aplicar formato a un texto

Problema: Quería mostrar en un textview texto de diferente color, normal para la etiqueta y rojo o azul para la respuestas, la idea era resaltar la respuesta que deseaba mostrar. Para ello existe una clase llamada Spannable que cuenta con esta opción, para crear un objeto de esta clase escribo el siguiente código:

Spannable texto=new SpannableString(“Una parte del texto en azul”);

Esta clase cuenta con varias opciones, entre ellas las siguientes:

  • TypefaceSpan. Modifica el tipo de fuente.
  • StyleSpan. Modifica el estilo del texto (negrita, cursiva, …).
  • ForegroundColorSpan. Modifica el color del texto.
  • AbsoluteSizeSpan. Modifica el tamaño de fuente.

Texto tomado de: http://www.sgoliver.net/blog/?p=1373

Como en este ejemplo mi intención es cambiar parte del texto a un color azul, usaré ForegroundColorSpan.

Ahora modificare mi variable texto para aplicarle el color azul a la palabra “parte”:

Texto.setSpan(new ForegroundColorSpan(Color.BLUE), 4,9,

            Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

Destripemos ahora el setSpan:

  • Creo un nuevo color de fondo, que en este caso lo defino azul.
  • El siguiente parámetro (4), representa el inicio del texto donde aplicaré este formato, tomemos en cuenta que se empieza a contar desde cero de ahí que escriba cuatro (aunque parte empiece en la quinta posición o por el quinto carácter).
  • El “9” representa el número del carácter donde terminará de aplicar el color azul.
  • Y por último una bandera que indica que el texto no se expandirá hacia ningún lado cuando se le inserte más.

Luego configuro un Textview y le asigno el objeto

TextView Tv=(TextView) findViewById(R.id.text);

Tv.setText(texto);

Pueden descargar del código desde aquícodigo