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.

PerEmanuel Moecklinntwort von @, ich habe versucht, ein @ einzuwickeLinearLayout und das Gewicht auf dem @ einstellleftTextView. Das Ergebnis war optisch identisch mit dem, was ich in # 2 ausprobiert habe.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage