2012-10-02 14 views
36

Ho un TextView nel mio layout che è wrap_content in layout_width. È limitato a un massimo di 15 caratteri, quindi sto utilizzando maxLength.Fine TextView con 3 punti con l'uso di maxLength

Ho bisogno di terminare questo TextView con 3 punti (...) e succede solo quando do a size_width una dimensione fissa con dp, qualcosa che non voglio fare.

So che è possibile farlo per codice e tagliare la stringa dopo il 15 ° carattere e quindi aggiungere i 3 punti, ma preferisco farlo tramite XML.

Qualche idea su come terminare il testo con 3 punti e lasciarlo wrap_content?

<TextView 
     android:id="@+id/inbox_contactName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:lines="1" 
     android:maxLines="1" 
     android:ellipsize="end" 
     android:singleLine="true" 
     android:maxLength="15" 
     android:textColor="#0670b4" 
     android:textSize="16sp" /> 
+0

potresti finire nel codice \ –

+0

Lo so, ma preferisco farlo tramite XML. – Yaniv

+0

vedere: http://stackoverflow.com/questions/1666736/android-textview-automatically-truncate-and-replace-last-3-char-of-string – HelmiB

risposta

-10

Posizionare un'altra finestra di testo accanto alla propria vista testo corrente e impostarne i dati su "...". È così.

+0

OK, ma cosa devo fare se il testo nel mio TextView è inferiore a 15 caratteri? Avrò 3 punti senza una buona ragione. – Yaniv

+0

Se si intende usare warp_content, non importa. In qualsiasi momento i 3 punti appariranno accanto al testo –

+0

Questo è quello che sto dicendo, non ho bisogno di loro se il mio testo è inferiore a 15 caratteri. – Yaniv

16

Raccolgo (dal commento) che @Yaniv l'ha già risolto usando il codice - ma questo è il modo giusto per farlo (con xml). Può aiutare gli altri utenti che arrivano qui. Il trucco consiste nell'utilizzare entrambi i toleftof e torightof.

<RelativeLayout> 
... 
<TextView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:singleLine="true" 
     android:layout_toRightOf="@id/some_element1" 
     android:layout_toLeftOf="@id/some_element2"/> 
... 
<RelativeLayout> 
+0

Ho solo dovuto usare 'toLeftOf'. – theblang

+0

Ha lavorato anche qui. – sandalone

0

rimuovere la riga da XML

android:lines="1" 
     android:maxLines="1" 
5

uso questo android:ellipsize="end"

52

Questo risolverà il vostro problema, utilizzare ellipsize proprietà nel codice XML

android:ellipsize="end" <!-- This makes the magic ... thing --> 
android:maxEms="15" <!-- Limit of the Text --> 
android:singleLine="true" <!-- In case if you want everything in one line --> 

Modifica:singleLine è deprecato. Utilizzare invece maxlines="1".

+0

Oggi ho notato che 'singleLine =" true "' e 'maxlines =" 1 "' si comportano in modo diverso quando sono usati con 'maxWidth' e' ellipsize' - per qualche motivo troncano di più con 'maxlines' - non so perché . – NemoOudeis

+0

@Kirk maxEms non funziona per limitare il numero di cifre, mentre, usando maxLength, non mostra punti. – NarendraJi

+2

@king possibilmente deprecato. Al momento di rispondere a questa domanda, era una soluzione funzionante. Se qualcuno conosce l'ultima patch, aggiorna gentilmente la mia risposta. – Kirk

0

Avevo bisogno di farlo con il pulsante radio e volevo limitare la dimensione a una linea. Quando ho usato Android:singleline="true", il cerchio di controllo del pulsante di opzione è scomparso. Ecco il codice che ha funzionato alla fine:

android:ellipsize="end" 
android:maxLines="1" 

Non è necessario impostare em. Questo probabilmente funzionerà anche in TextView e altri componenti dell'interfaccia utente. Spero che questo aiuti qualcuno.

11

Non è possibile utilizzare sia maxLength e Ellipsize anche se è possibile definire Maximum EMS vedere l'esempio seguente

<TextView 
     android:id="@+id/tv_hist_source_lang" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:maxEms="8" 
     android:maxLines="1" 
     android:text="TextView" 
     android:textAppearance="?android:attr/textAppearanceMedium" /> 

It looks like this

3

Uno dei modi più semplici è quello di aggiungere destro Imbottitura + Ellipsize

<TextView 
      android:id="@+id/txtvw_contentcell_subhead" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="Polem sampler, Lorem Ipsum golep tolem burop yemit noski" 
      android:ellipsize="end" 
      android:maxLines="1" 
      android:textColor="@color/caption_black_color" 
      android:textSize="@dimen/caption_size" 
      android:paddingRight="40dp"/> 

Ecco un esempio di sottotitolo Testo con limite di caratteri. enter image description here

+0

Quando sto usando Android: maxLines = "3", allora come è possibile nella riga di testo del testo vedi "..."? –

+0

@PraveenKumarVerma mi dispiace non ho la tua domanda, puoi aggiungere ulteriori dettagli. Thankyou – Enzokie

+0

Voglio dire, ho TextView in set 3 righe di testo e l'ultima riga 3 set "..." punteggiato. –

2

È possibile utilizzare

android:maxWidth="100dp" 
android:maxLines="1" 
android:ellipsize="end" 

Solo questo funziona per me.

0

È possibile modificare lo String quando la lunghezza è superiore a 20 per aggiungere l'ellissi.

0

MOLTO IMPORTANTE: ellipsize = "end" funziona solo quando maxLength è impostato su un valore superiore al numero di caratteri su una riga. È possibile utilizzare 'wrap_content' se si allinea la fine di TextView e si inizia a qualsiasi altra vista (s).