Textansicht mit Langtext verschiebt andere Ansichten in GridLayout trotz Ellipsengröße = Ende
Mein Problem ist sehr ähnlichSo erhalten Sie ein Layout, in dem ein Text vergrößert und verkleinert werden kann, die anderen Elemente im Layout jedoch nicht verschlungen werden, aber lesen Sie weiter unten, warum ich TableLayouts nicht wie dort vorgeschlagen verwenden kann.
Ich versuche, eine Listview-Zeile zu erstellen, die im Grunde so aussieht:
| TextView | Ansicht 1 | Ansicht 2 |
Alle Ansichten enthalten Elemente mit variabler Breite. In der Textansicht ist ellipsize = "end" gesetzt. Ansicht 1 sollte links von der Textansicht ausgerichtet werden, während Ansicht 2 rechts vom Bildschirm ausgerichtet werden sollte. Normalerweise gibt es zwischen Ansicht 1 und Ansicht 2 Leerzeichen. Wenn der Text in der Textansicht länger wird, sollte die Textansicht größer werden und Ansicht 1 nach rechts schieben, bis kein Leerzeichen mehr vorhanden ist. Dann sollte Ellipsengröße aktiviert werden, wobei der Text in TextView abgeschnitten und am Ende eine Ellipse ("...") angehängt wird.
Das Ergebnis sollte also ungefähr so aussehen:
+----------------------------------------+
| short text [view1] [view2] |
+----------------------------------------+
| long text with ell ... [view1] [view2] |
+----------------------------------------+
Ich habe es versucht:
TableLayouts, aber sie scheinen das Scrollen auf einigen Geräten extrem langsam zu machen.RelativeLayouts, aber ich hatte entweder überlappende Ansichten oder Ansicht1 oder Ansicht2 verschwand vollständig.GridLayouts, aber die Textansicht wird immer größer, bis sie die gesamte Breite des Bildschirms einnimmt, wodurch view1 und view2 aus dem Bildschirm verschoben werden.Dies ist das GridLayout, das ich ausprobiert habe:
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_gravity="left|fill_horizontal"
android:ellipsize="end"
android:singleLine="true"
android:text="Long text to demonstrate problem with TextView in GridLayout taking up too much space despite ellipsis" />
<TextView
android:layout_gravity="left"
android:text="(view1)" />
<TextView
android:layout_gravity="right"
android:text="(view2)" />
</GridLayout>
Ansicht 1 und Ansicht 2 sind nicht wirklich TextViews, ich habe sie nur im Beispiel verwendet, um die Dinge zu vereinfachen.
Gibt es eine Möglichkeit, dies zu erreichen, ohne TableLayouts zu verwenden?
BEARBEITEN: Wie gewünscht, ist hier mein Versuch, dies mit einem RelativeLayout zu lösen. Die Textansicht nimmt in diesem Fall die gesamte Bildschirmbreite ein, sodass weder view1 noch view2 sichtbar sind.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/rl0"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:ellipsize="end"
android:singleLine="true"
android:text="Long text to demonstrate problem with TextView in GridLayout taking up too much space despite ellipsis" />
<TextView
android:id="@+id/rl1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/rl0"
android:layout_marginLeft="10dp"
android:text="(view1)" />
<TextView
android:id="@+id/rl2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/rl1"
android:layout_alignParentRight="true"
android:layout_marginLeft="10dp"
android:text="(view2)" />
</RelativeLayout>