2012-04-20 11 views
13

http://dl.dropbox.com/u/24856/Screenshots/android/cutoff.pngTextView cortando una carta en Android

esta es una captura de pantalla de mi androide. el texto es "asd". sin embargo, la "d" se corta ligeramente. aquí está la vista relevante:

 <TextView 
      android:id="@+id/stuff" 
      android:padding="2dp" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_below="@+id/other_stuff" 
      android:layout_marginTop="33dp" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:textStyle="italic" /> 

¿Alguna idea de qué está causando esto?

+0

pegue todo el archivo xml aquí, no solo de textview. –

+0

¿Intentó eliminar el relleno? (Si funciona, simplemente cámbielo a margen) – Joe

Respuesta

15

ninguna de las sugerencias mencionadas trabajo, terminó con una solución hacky que está agregando un espacio en blanco después del último carácter en cursiva

+3

Para la posteridad, voy a anotar mis experiencias. Esto ocurrió con una letra cursiva en múltiples dispositivos (incluso hasta Jellybean). Cambiar la propiedad de relleno no hizo nada. Solo dos cosas hacky funcionaron: (1) establecer un ancho fijo más ancho de lo que necesita y (2) agregar un espacio programáticamente al final como sigue: tv.setText (tv.getText() + ""); –

+0

Para cualquiera que todavía tenga dificultades con esto, he creado un método general para resolver esto con varias líneas. https://stackoverflow.com/a/44218468/4420543 – andras

0

podría ser el relleno, pruebe a ajustarla a que 0DP

también hay algo más en el diseño?

0

Puede usar.

android:layout_width="fill_parent" 

Istead de

android:layout_width="wrap_content" 
0

sospecho que el problema no ocurriría si no se está usando el texto en cursiva. Probablemente lo probaría primero, y si el texto que no está en cursiva lo muestra correctamente, parece un problema de renderizado, que necesitaría trabajar con relleno adicional en TextView para dejar espacio para las letras en cursiva.

0

el problema aquí es, la propiedad en cursiva. Tienes que establecer un ancho particular para tu vista de texto.

4

i fijo con establecer el ancho de Vista de Texto a fill_parent en lugar de wrap_content ...

0

siempre se puede crear TextView personalizada que utilizará, por ejemplo, este tipo de letra (la causa de hecho, esto es un problema con cursiva tipo):

Typeface tf = Typeface.createFromAsset(context.getAssets(), "fonts/Roboto-LightItalic.ttf"); 
setTypeface(tf); 

Más detalles here.

1

Esta es mi solución: Formato textview y medida. Después de establecer el ancho de la vista de texto con 1 píxel, agregue el ancho medido.

TextView textView = new TextView(this); 
    textView.setText("Text blah blah"); 
    textView.setTypeface(typeface, Typeface.BOLD_ITALIC) 
    textView.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); 
    textView.setLayoutParams(new LayoutParams(textView.getMeasuredWidth() + 1, LayoutParams.WRAP_CONTENT)); 

Estoy trabajando para mí. Espero que esto ayude

5

Ok, esto es bastante extraño, pero cambié de android:maxLines="1" a android:singleLine="true" y ahora el texto no se está cortando.

+0

* Nota: android: singleLine está en desuso –

+0

Sé que 'android: singleLine' está en desuso, sin embargo, en algunos casos, usar' android: maxLines = "1" 'hará hacer que el texto se corte Esto es claramente un error. – toobsco42