2011-11-10 17 views
24

Sto creando un TextView a livello di codice che desidero per i puntini di sospensione alla fine.Creazione di TextView a livello di codice con puntini di sospensione

pseudo codice:

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setSingleLine(); 

I lavori di cui sopra GRANDE.

tv.setEllipsize(TextUtils.TruncateAt.END); 
    tv.setHorizontallyScrolling(false); 
    tv.setMaxLines(1); 

Questo non funziona. è un insetto? Non capisco perché non riesco a ottenere il testo in ellissi alla fine quando si specificano maxLines, in particolare una maxLine di 1, ma setSingleLine è ok.

risposta

45

setSingleLine() o setSingleLine(true) impedisce a TextView di modificare l'altezza su più righe e costringe TextView a ignorare le interruzioni di riga (il simbolo \n in una stringa).

setMaxLines(int n) visualizza le prime n righe della stringa visualizzate nel TextView separate da un'interruzione di riga.

Per esempio lasciare che la stringa di essere "la mia prima linea \ n e la mia seconda linea \ n e una terza"

  • setSingleLine() consente la visualizzazione TextView "la mia prima linea e la mia ..", in quanto il display larghezza è superato e
  • setMaxLines(1) risultati in "la mia prima linea"
  • setMaxLines(2) risultati in "la mia prima linea" e sotto una linea che dice "e la mia seconda linea"
  • setMaxLines(3), ovviamente, non ha alcun effetto su questo campione str ing.

Update: Questo dovrebbe funzionare per "setDoubleLine con troncamento":

// optional: string.replace("\n",""); or string.replace("\n"," "); 
tv.setSingleLine(false); 
tv.setEllipsize(TextUtils.TruncateAt.END); 
int n = 2; // the exact number of lines you want to display 
tv.setLines(n); 
+1

impressionante. E 'possibile avere un TextView che è a due righe e ancora ellisse alla fine? cioè, setDoubleLine() ecc.? Questo è il modo in cui immaginavo che maxLine funzionasse. Per quello che vale la mia altezza e larghezza sono impostate su valori di immersione, non su match_parent. – sgarman

+0

@AndreyButov grazie per aver suggerito una modifica, avrei accettato se non dorme. Ho corretto il post ora secondo il tuo suggerimento. Grazie ancora. – stefan

Problemi correlati