Ho un TextView
con un'altezza massima sconosciuta, che dipende dalla risoluzione dello schermo/DPI del dispositivo. Quindi, ad esempio, su e dispositivo MDPI questa altezza massima consente di mostrare solo 2 linee alla volta, un valore che può essere aumentato fino a un numero indefinito.Ellipize non funziona correttamente per un TextView multilinea con un'altezza massima arbitraria
Il mio problema è correlato alla funzionalità ellipsize. Supponiamo che un determinato dispositivo consenta la visualizzazione di 4 linee. Se imposto manualmente il numero massimo di righe, in questo modo ...
<TextView
android:id="@+id/some_id"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:ellipsize="end"
android:maxLines="4"
android:singleLine="false"
android:layout_weight="1"
android:gravity="center_vertical"
android:text="This is some really really really really really long text"
android:textSize="15sp" />
... tutto funziona correttamente. Se il testo non si adatta correttamente, quindi i puntini di sospensione vengono aggiunti alla fine della quarta linea, in questo modo:
This is some
really really
really really
really long...
ma preferirei non impostare il numero di linee come una variabile statica, come preferirei includere il supporto per qualsiasi combinazione di DPI/risoluzione dello schermo. Quindi se rimuovere maxLines
i puntini di sospensione non viene più correttamente mostrato in linea a quattro, mostra invece una porzione incompleta di testo:
This is some
really really
really really
really long
Se leggermente aumentare la dimensione TextView
, posso vedere che il resto del testo è ancora essendo disegnato "dietro" l'altro Views
. Anche l'impostazione della variabile maxHeight
non sembra funzionare.
Non riesco davvero a trovare una soluzione per questo problema. Qualche idea? Se aiuta, sto lavorando solo con Android v4.0.3 e versioni successive (livello API 15).
Funziona perfettamente. Grazie mille! – DPR
Divino! Ho salvato la mia giornata! – Roman
Nota: l'altezza della linea può variare! E quindi il metodo getLineHeight non funzionerà sempre come previsto. Questo potrebbe accadere ad esempio quando si usano gli spannabili per rendere le dimensioni del carattere più grandi in una parte specifica del testo. –