2011-08-18 13 views
6

Tengo un texto largo que contiene un nombre que parece "algo-algo". Este texto largo se muestra en TextView. El problema es que "algo-algo" tiene línea violada.Android: ¿Cómo puedo hacer un bloque no rompible en TextView?

He encontrado el carácter Unicode U + 2011 INCREÍBLE HIPEN. Pero parece que este carácter Unicode es compatible con la fuente desde Android 3.0. Sin embargo, estoy soportando Android 2.1 donde se muestra el personaje de reemplazo en su lugar.

He visto la clase Spannable, pero no he encontrado cómo definir el bloque de texto que no se rompe. Tal vez pase por alto algo.

Respuesta

2

Resolví romper el bloque de texto implementando ReplacementSpan para representar texto en bloque único. Aquí está el código:

public class NonbreakingSpan extends ReplacementSpan { 

    @Override 
    public void draw(
      Canvas canvas, 
      CharSequence text, int start, int end, 
      float x, int top, int y, int bottom, 
      Paint paint) { 
     canvas.drawText(text, start, end, x, y, paint); 
    } 

    @Override 
    public int getSize(
      Paint paint, 
      CharSequence text, int start, int end, 
      FontMetricsInt fm) { 
     return Math.round(paint.measureText(text, start, end)); 
    } 
}