Android TextView-Kürzungspriorität oder -Komprimierungswiderstand [duplizieren]
Diese Frage hat hier bereits eine Antwort:
rweitern Sie TextView mit wrap_content, bis die Nachbaransicht das Ende des übergeordneten @ erreich 6 answers Ich lege 3 Ansichten horizontal auf dem Bildschirm an (Bild mit fester Größe und 2 einzeilige Textansichten:leftTextView
undrightTextView
) und ich versuche das @ zu bekommrightTextView
gegen das @ umarmleftTextView
, aber für den Fall, dass die Breite beider Beschriftungen die Bildschirmgröße überschreitet, kürzen Sie dasleftTextiew
.
Beispiel für die gewünschte Funktionalität:
|img|leftText|rightText| ||(end of screen)
|img|leftTextMedium|rightText| ||
|img|leftTextTooLongSoTrunc...|rightText||
Was ist eigentlich los:
|img|leftText|rightText| ||(end of screen)
|img|leftTextPrettyLongButNotHuge|rightT||
|img|leftTextWhichIsIncrediblyLongBlahBl||
enn derzeit die Größe beider Textansichten die Breite der Ansicht überschreitet, wird dasrightTextView
wird am Ende gequetscht, um Platz zu schaffen, obwohl ich @ gesetzt haandroid:ellipsize="end"
auf derleftTextView
.
Gibt es eine Möglichkeit, das @ zu machleftTextView
hat eine "Kürzungspriorität", die besagt, dass sie gekürzt werden sollte, wenn andere Ansichten nicht passen würden? Oder auf der anderen Seite kann ich das @ setzrightTextView
einen "Kompressionswiderstand" haben, um zu verhindern, dass er gequetscht wird, um Platz für das @ zu schaffleftTextView
? Hier ist ein Beispiel für mein XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/fixedWidthImage"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/leftTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/fixedWidthImage"
android:layout_toRightOf="@id/fixedWidthImage"
android:maxLines="1"
android:textSize="18sp"
android:ellipsize="end" />
<TextView
android:id="@+id/rightTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toEndOf="@+id/leftTextView"
android:layout_toRightOf="@+id/leftTextView"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:maxLines="1"
android:textSize="12sp" />
</RelativeLayout>
Things ich habe versucht:
In demleftTextView
, füge hinzu eintoStartOf
/ toLeftOf
dasrightTextView
(stürzt die App ab) Anstatt das @ auszurichtrightTextView
bis zum Ende / rechts vomleftTextView
, drehen Sie es und richten Sie das @ aleftTextView
zum Anfang / links vomrightTextView
. Dies ergibt dasrightTextView
wird am Ende des Bildschirms verankert, anstatt direkt rechts vomleftTextView
. Beispiel dafür, wie dies letztendlich aussieht:
|img|leftText |rightText||
|img|leftTextMedium |rightText||
|img|leftTextTooLongSoTrunc...|rightText||
Auch wenn ich @ setandroid:minWidth="25dp"
nur um mindestens @ zu gewährleistTei desrightTextView
ist sichtbar (was ich nicht tun möchte, weil diese Textlänge variabel ist) und komprimiert trotzdem die Breite, um Platz für das @ zu schaffeleftTextView
.
LinearLayout
und das Gewicht auf dem @ einstellleftTextView
. Das Ergebnis war optisch identisch mit dem, was ich in # 2 ausprobiert habe.