2011-10-07 10 views
11

Quiero establecer el margen de inicio solo para la primera línea de TextView (¿No es la primera línea de cada párrafo)? He utilizado el siguiente código:margen establecido en la primera línea de textView

SpannableString s = new SpannableString("this is a test"+"\n"+"this is a test"); 
s.setSpan(new android.text.style.LeadingMarginSpan.Standard(30, 0), 0, s.length(), 0); 
textView .setText(s); 

Aquí el margen de inicio se establece para todas las líneas del párrafo ... No lo quiero. Quiero que el margen de inicio se aplique solo para la primera línea ... Pls help ..

+1

Creo que tienes que usar el espacio en blanco solo ... – Hiral

+0

¿Hay alguna otra manera? – ShineDown

+2

luego puede tomar dos vistas de texto separadas: 1 para el 1er párrafo y otras para las restantes. simplemente configure span para 1st textview y deje que otros sean como son. Creo que no tienes otra forma. – Hiral

Respuesta

2

Como se ha sugerido aquí, también creo que la mejor solución es simplemente agregar algunos espacios al comienzo. Si solo necesita el espacio de margen en la primera línea del TextView, no veo ninguna razón por la que deba hacer algo realmente avanzado.

Si necesita cambiar o utilizar el texto en la Vista de Texto en un momento posterior, sólo se puede utilizar el método substring() para obtener sólo una parte de la cadena, es decir s.substring(2, s.length());

No es una solución perfecta, pero Creo que va a funcionar

+0

El problema es que los caracteres diff necesitan longitud de diferencia de UI para mostrar, (por ejemplo, 'm' necesita más longitud que 'i'), y una longitud de espacio no es igual a la longitud de todos los caracteres. –

5

Usted ya respondió su propia pregunta.
Todo lo que necesita hacer es establecer la duración del tramo en 1 en lugar de s.length().

if (s.lenght() > 0) { 
    s.setSpan(new android.text.style.LeadingMarginSpan.Standard(30, 0), 0, 1, 0); 
} 

Ese margen de ruta solo se aplicará al primer párrafo.

Cuestiones relacionadas