Mam TextView
o nieznanej maksymalnej wysokości, która jest zależna od rozdzielczości DPI/ekranu urządzenia. Tak więc, na przykład, na urządzeniu MDPI ta maksymalna wysokość umożliwia wyświetlanie tylko 2 linii naraz, a wartość ta może zostać zwiększona do nieokreślonej liczby.Elipsa nie działa poprawnie dla wielowierszowego TextView z dowolną maksymalną wysokością
Mój problem jest związany z funkcjonalnością elipsy. Załóżmy, że określone urządzenie pozwala wyświetlić 4 linie. Jeśli ręcznie ustawiam maksymalną liczbę linii, tak ...
<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" />
... wszystko działa poprawnie. Jeśli tekst nie mieści się prawidłowo, wówczas elipsa są dodawane na końcu czwartej linii, tak:
This is some
really really
really really
really long...
Ale wolałbym nie ustawić liczbę wierszy jako zmiennej statycznej, wolałbym włączyć obsługę dowolnej kombinacji rozdzielczości DPI/ekranu. Więc jeśli mogę usunąć maxLines
wielokropek nie jest już poprawnie przedstawione w wierszu cztery, pokazując zamiast niepełną część tekstu:
This is some
really really
really really
really long
Gdybym nieznacznie zwiększyć rozmiar TextView
, widzę, że reszta tekstu jest nadal narysowany "za" innym Views
. Ustawienie zmiennej maxHeight
również nie działa.
Naprawdę nie mogę znaleźć rozwiązania dla tego problemu. Jakieś pomysły? Jeśli to pomaga, pracuję tylko z Androidem w wersji 4.0.3 i nowszej (poziom interfejsu API 15).
Działa idealnie. Dziękuję Ci bardzo! – DPR
Godlike! Uratowałem mój dzień! – Roman
Uwaga: wysokość linii może się różnić! I dlatego metoda getLineHeight nie będzie działać zgodnie z oczekiwaniami. Może się to zdarzyć na przykład podczas używania spannables do zwiększenia rozmiaru czcionki w określonej części tekstu. –