Porównaj ceny domen i usług IT, sprzedawców z całego świata

Automatycznie wyciąć tekst TEXTVIEW, aby nie pokrywający się na innym telefonie


Mam listView , który wyświetla grupę zadań domowych. ListView Użyj
Framelayout
, aby pomieścić dwa
TextViews
. Pierwszy TextView jest wyrównany do lewej krawędzi, a drugi prawy. (Oba są wyrównane w środku pionowo.) Pierwszy wyświetla fragment opisu zadania, a druga jest datą wykonania.
Co chcę zrobić, to zrobić, aby termin egzekucji zajmuje tyle miejsca, ile potrzebuje, a opis wypełnił pozostałą przestrzeń, taką:
|----------------------------------------------------|

|. Czytanie PGS 15-35, Aktualizacja Tim ... Fri, Maj 4 |

|----------------------------------------------------|
Obecnie tekst opisu nadal będzie nakładał się na datę. Jednak zostanie obcięty na końcu wiersza.
Jeśli mogę to zrobić w XML, lub muszę to zrobić w kodzie, zwarcie ciąg, zanim ustawię tekst> Tekst (przypuszczalnie, w moim połączeniu
GetView
) ? Jeśli zrobiłem to w Kodeksie, musiałbym obliczyć liczbę poziomych przestrzeni, które zajmowałyby linie i dowiedzieć się, jak krótki opis powinien być. Wydaje się, że może prowadzić do bałaganu ...
Wszelkie inne sugestie, jak to zrobić, naprawdę doceniamy!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj użyć atrybutu elipsize, na przykład:
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:singleLine="true"/>

Należy pamiętać, że Android lub przynajmniej niektóre wersje wymagają zarówno atrybutów "Elipsize", jak i "Singleline" atrybutów, aby system uruchomił obcięcie i dodać kropkę.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zamiast FrameLayout jest to idealne miejsce na LinearLayout lub RelativeLayout w połączeniu z elipsize:
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content" > <TextView
...
android:width="0dp"
android:height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"/> <TextView
...
android:width="wrap_content"
android:height="wrap_content"
android:layout_weight="0"/></LinearLayout>

Albo naprzemiennie
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" > <TextView
...
android:id="@+id/secondTV"
android:width="wrap_content"
android:height="wrap_content"
android:layout_weight="0"/> <TextView
...
android:width="0dp"
android:height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/secondTV"
android:ellipsize="end"/></RelativeLayout>
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zmień Framelayout na linearlayout lub relatuSiveLayout.
  • LinearLayout: ustaw termin „wrap_content” i szerokość opisu 0dp, a następnie dodaj layout_weight = „1” do opisu
  • RELATIVELayout: Pierwsza pozycja Data wykonania za pomocą szerokości Wrap_content, a następnie umieść opis z regułą, którą należy pozostać od daty wykonania.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Zarówno Anton, jak i JRaymond byli mocno zaangażowani (JRaymond pomógł mi to zrozumieć na swoim przykładzie). Oto co wymyśliłem:
<RelativeLayout android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/due_date"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:layout_alignParentRight="true"
android:singleLine="true"/> <TextView android:id="@+id/description"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_alignParentLeft="true"
android:layout_toLeftOf="@id/due_date"
android:singleLine="true"/>
</RelativeLayout>

(Najpierw musiałem zadeklarować moją etykietę Data płatności, aby mogła się z nią odnosić w opisie. Właśnie zrozumiałem, że Android: Elipsize wydaje się opcjonalne - myślę, że domyślnie jest to "koniec".)
Dziękuję bardzo!

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się