2012-04-20 10 views
13

http://dl.dropbox.com/u/24856/Screenshots/android/cutoff.pngTextView tagliando una lettera in Android

questo è uno screenshot dal mio Android. il testo è "asd". tuttavia la "d" è leggermente tagliata. qui è la vista rilevante:

 <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" /> 

alcuna idea di che cosa sta causando questo?

+0

incolla tutto il file xml qui pls, non solo di textview. –

+0

hai provato a rimuovere il padding? (se funziona basta cambiarlo in margine) – Joe

risposta

15

nessuno dei suggerimenti menzionati work, si è conclusa con una soluzione hacky, che è l'aggiunta di uno spazio bianco dopo l'ultimo carattere corsivo

+3

Per i posteri, prenderò nota delle mie esperienze. Questo si è verificato con un carattere corsivo su più dispositivi (anche fino a Jellybean). La modifica della proprietà padding non ha fatto nulla. Solo due cose hacky hanno funzionato: (1) impostando una larghezza fissa più ampia del necessario e (2) aggiungendo programmaticamente uno spazio alla fine in questo modo: tv.setText (tv.getText() + ""); –

+0

Per chiunque ancora stia lottando con questo, ho creato un metodo generale per risolvere questo problema con più linee. https://stackoverflow.com/a/44218468/4420543 – andras

0

potrebbe essere l'imbottitura, provare a impostare che a 0DP

è anche lì niente altro nel layout?

0

È possibile utilizzare.

android:layout_width="fill_parent" 

istead di

android:layout_width="wrap_content" 
0

ho il sospetto che il problema non si sarebbe verificato se non si sta utilizzando testo in corsivo. Prima lo proverei, e se si usa il testo non-italico lo rende correttamente, allora sembra un problema di rendering, che avrebbe bisogno di lavorare con il padding extra in TextView per lasciare spazio alle lettere in corsivo.

0

il problema qui è la proprietà italic. Devi impostare una larghezza particolare per la tua vista testo.

4

ho fissato con l'impostazione della larghezza della TextView a fill_parent invece di wrap_content ...

0

Si può sempre creare TextView personalizzato che utilizzerà per esempio questo tipo di carattere (causa in realtà questo è un problema con corsivo tipo):

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

Maggiori dettagli here.

1

Questa è la mia soluzione: Formato textview e misura. Dopo quella larghezza impostata di textview con 1 pixel, aggiungere alla larghezza misurata.

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)); 

Lavoro per me. Spero che questo aiuto.

5

Ok, questo è piuttosto strano ma sono passato da android:maxLines="1" a android:singleLine="true" e ora il testo non viene troncato.

+0

* Nota: android: singleLine è deprecato –

+0

So che 'android: singleLine' è deprecato, tuttavia in alcuni casi, usando' android: maxLines = "1" ' causa il taglio del testo. Questo è chiaramente un bug. – toobsco42