Android: TextView tronca e sostituisce automaticamente gli ultimi 3 caratteri di String


131

Se a Stringè più lungo della TextViewlarghezza, si avvolge automaticamente sulla riga successiva. Posso evitarlo usando android:singleLine(deprecato) o impostando android:inputType="text". Ciò di cui ho bisogno ora è qualcosa che sostituisca i miei ultimi 3 caratteri Stringcon " ... ". Dal momento che non sto usando un carattere monospace questo sarà sempre diverso a seconda delle lettere utilizzate nel mio String. Quindi mi chiedo quale sia il modo migliore per ottenere gli ultimi 3 caratteri di una stringa in una TextViewe sostituirli. Forse c'è già qualcosa implementato nel framework Android, poiché questo deve essere un problema comune.

Risposte:


290

Dovresti essere in grado di utilizzare la proprietà "ellipsize" di una vista di testo:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Potrebbe anche essere necessario applicare valori di gravità anche al layout; A volte ho visto viste "autoallungamento" senza di esse.


Perfetto. Grazie. L'ho provato prima, ma non ha funzionato, perché ho usato android: inputType = "text" anziché android: singleLine = "true" (che dovrebbe essere deprecato). Ma ora continuerò con Android: singleLine = "true". Molte grazie.
znq,

44
Non aggiunge ancora il "...". Per me, questa domanda non ha una risposta completa! Questa risposta renderà "short longlongword" solo a "short" e non "short verylon ..." Inoltre, voi ragazzi suggerite di usare un attributo deprecato.
OneWorld,

7
Funziona alla grande, tuttavia singleLine è obsoleto, quindi è necessario utilizzare maxLines = "1". Nota a margine, il puntino di sospensione funziona anche con più linee!
Torre Lasley,

4
singleLine è obsoleto. Usa maxLines = "1". solo un commento alla vecchia risposta
Ewoks

1
MaxLine = 1 troncherà la visualizzazione di testo nel mezzo. SingleLine = True funziona come previsto.
Snake,

33

Ho trovato un'interessante soluzione per questo problema.

maxLines=1
ellipsize=end
scrollHorizontally=true

Il trucco è l'ultima affermazione sullo scorrimento orizzontale .... dai un'occhiata. Funziona almeno su v2.2.


Interessante ... buono a sapersi. Grazie Marco per l'heads-up.
BonanzaDriver

4

A livello di programmazione, è possibile utilizzare:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.