2010-09-22 8 views
43

This property rendeAndroid: Qualcosa di meglio di Android: ellipsize = "fine" per aggiungere "..." alle lunghe stringhe troncate?

"breve e molto a lungo termine"

a

"breve e"

. Ma voglio avere smth. come

"breve e molto-lon ..."

In questo momento mi troncare la stringa di codice Java. Tuttavia, questo è basato sul numero di caratteri e non sulla lunghezza effettiva del collegamento. Quindi, il risultato non è molto bello.

String title; 
    if(model.getOrganization().length() > 19) { 
     title = model.getText().substring(0, 15).trim() + "…"; 
    } else { 
     title = model.getText(); 
    } 
    ((TextView) findViewById(R.id.TextViewTitle)).setText(title); 

Aggiornamento

appena notato, questa struttura in realtà aggiunge "..." in alcuni casi. Ma non in tutti:

123456789diventa "12.345.678,9millions ..."

Tuttavia,

"123456789" diventa "1234567890" e non "1234567890 123 ... "

Aggiornamento 2

Ora diventa davvero divertente! Ho appena impostato SingleLine = true e rimosso MaxLine (Il bug appare con e senza impostare ellipsize attributo) ...

alt text

Questo è uno screenshot prendere da Motorola Milestone con Android 2.1 aggiornamento 1. Lo stesso accade su HTC desiderio con la stessa versione di Android

Update 3

Ora utilizzare Android: ellipsize = "tendone". Questa sembra essere l'unica impostazione correttamente funzionante. È anche in movimento, quando è concentrato. Lo vedo anche in molte altre app. Immagino che sia una pratica comune.

risposta

1

Vedere il mio aggiornamento 3. La soluzione alternativa era usare "tendone". Ho visto molte app farlo in questo momento. Ora, con le nuove versioni di Android questa funzione è probabilmente riparata e funzionerà come previsto. (la mia ipotesi)

23

Ho avuto un problema simile e l'impostazione di questa struttura al TextView aiutato:

android:singleLine="true" 

Inoltre, stavo usando un RelativeLayout così ho limitato lo spazio del TextView potrebbe prendere impostando un margine sinistro di un pulsante per il diritto di TextView, in modo che il testo non possa espandersi ulteriormente ed è costretto a troncare il suo contenuto.

Forse non è la soluzione al tuo problema, ma mi ha aiutato in una situazione simile.

+1

Non ha aiutato nel mio caso. Tra l'altro "singleLine" è deprecato. Non devo impostare i margini, è già in corso di calcolo, ma non è molto bello. – OneWorld

+0

controlla questa domanda: http://stackoverflow.com/questions/1698881/cant-get-ellipsis-to-work-on-android So che singleline è deprecata, leggi i commenti nella pagina dei bug dalla domanda collegata e tu " Vedremo perché lo sto usando. – Maragues

+0

Vedere Aggiornamento 2 sopra – OneWorld

1

Forse potresti dare un'occhiata a come funziona lo private Ellipsizer class utilizzato dal sistema operativo e modificarlo per la tua app?

Edit: Ecco un link di lavoro - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830

+7

OK, grazie! Ci sono suggerimenti meno dispendiosi in termini di tempo? – OneWorld

+0

Il link sopra non funziona più. – Kedarnath

+0

Qui vai Kedarnath - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830 – Josh

61

Se è per una singola linea provare questo:

android:ellipsize="end" 
android:maxLines="1" 
android:scrollHorizontally="true" 
android:singleLine="true" 

Ha funzionato per me.

+1

'Android: scrollHorizontally =" true "' davvero necessario ? Ho capito di funzionare senza di essa. – Mauker

+1

@Mauker Bene, ho postato questa risposta nel 2012, sono davvero impressionato dal fatto che le persone debbano ancora trovare una soluzione alternativa per questo. Qualcosa potrebbe essere cambiato, sentiti libero di modificarlo. : +1: – bakkay

+0

Non è necessario il maxLine e lo scorrimento Proprietà orizzontali – prats110892

Problemi correlati