Android - Poner la primera letra del TextView de otro color

 
Vista:

Poner la primera letra del TextView de otro color

Publicado por gvi17 (1 intervención) el 20/08/2015 19:58:27
Hola, soy nuevo en esto de programación en android y estoy intentando desarrollar una aplicación sencilla. Se trata de una aplicación para leer un libro y necesito que el número de cada capítulo sea de color rojo mientras que el resto del texto sea de color negro. No sé como puedo hacer eso estando todo en el mismo TextView o si hay alguna otra manera de hacerlo, cualquier sugerencia es bien recibida

Muchas gracias por su atención

Un saludo!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de James
Val: 103
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Poner la primera letra del TextView de otro color

Publicado por James (34 intervenciones) el 26/08/2015 18:07:15
Hola amigo.

Una de las formas de hacerlo es con la interfaz Spannable.

Esta permite que los strings puedan recibir estilos y modificaciones en su estructura visual.

Para ello solo debes usar la clase SpannableStringBuilder y reconstruir la cadena con su primera letra en rojo. Algo como:

1
2
3
4
5
6
7
8
SpannableStringBuilder stringBuilder =
            new SpannableStringBuilder(tuString);
 
    stringBuilder.setSpan(new ForegroundColorSpan(Color.RED),
            0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
 
    TextView textView = (TextView) findViewById(R.id.textView);
    textView.setText(stringBuilder);

Como ves, al construir el builder debes pasar como parámetro tu string. Luego con setSpan() declaras que desde la posición 0 hasta la 1 añadirás el estilo ForegroundColorSpan con color rojo.

Hace poco escribí un artículo sobre ello. Te dejo el link por si quieres aprender más.

http://www.hermosaprogramacion.com/2015/08/uso-de-strings-en-android-como-recursos-de-texto/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar