2016-08-19 4 views
-1

Ich bin für eine effiziente Art und Weise suchen (am besten XML nur) zwei TextView s horizontal auszurichten, smth wie folgt aus:Textview mit unterschiedlichen Textlängen nächsten Ausrichten horizontal

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal"> 
     <TextView 
      android:id="@+id/opinion_author" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:ellipsize="end" 
      android:lines="1" 
      android:maxLines="1"/> 
     <TextView 
      android:id="@+id/opinion_date" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:lines="1" 
      android:maxLines="1"/> 
    </LinearLayout> 

opinion_date wird immer ~ 50-70dp Länge und muss vollständig sichtbar nach rechts von opinion_author ausgerichtet sein. Autor kann 0-255 Zeichen haben und wenn zu viel für Bildschirm dann Ellipsize dann.

In oben, wenn der Autor zu lange ist, ist die Ansicht Datum ausschieben. Gleiche Situation bei Verwendung von toRightOf/toLeftOf bei Verwendung von RelativeLayout. Einstellung layout_weight=1 für Author halten Datum an der rechten Kante der Eltern-Viewgroup geklebt, auch wenn der Autor nur wenige Zeichen haben, so Thre ist eine Menge Platz ... Ich bin auf der Suche nach einem Weg, der Datum rechts des Autors ausrichtet, auch wenn es ist ellipsized und endet mit ... ich einige Ideen, wie es zu lösen in Java (Ansichten oder textpaint messen, aber alles scheint nicht so effizient, ...)

+0

kommentieren wenn downvote – snachmsm

Antwort

1

Versuchen sie diesen Code:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:shrinkColumns="0"> 
<TableRow 
    android:gravity="center_horizontal"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:gravity="center" 
     android:lines="1" 
     android:singleLine="true" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="10dp" 
     android:layout_marginStart="10dp" 
     android:ellipsize="none" 
     android:gravity="center" 
     android:lines="1" 
     android:singleLine="true" /> 
</TableRow> 

+0

und wir haben den Gewinner! 'TableLayout' und' shrinkColumns', so offensichtlich ... danke, dziękuję :) – snachmsm

0

Geben Sie Ihrem linearen Layout android:weightSum = "1". Geben Sie android:maxWidth="250dp" an die Textansicht von opinion_author. Geben Sie android:layout_weight="0.3" zu meinung_datum textview.

Etwas wie unten angegeben.

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:weightSum="1" 
     android:orientation="horizontal"> 
     <TextView 
      android:id="@+id/opinion_author" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:ellipsize="end" 
      android:maxWidth="250dp" 
      android:lines="1" 
      android:maxLines="1"/> 
     <TextView 
      android:id="@+id/opinion_date" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:lines="1" 
      android:layout_weight="0.3" 
      android:maxLines="1"/> 
    </LinearLayout> 
+0

lassen Autor sein "a" und Datum "27. Oktober" - wie das Datum wird neben "a" ausgerichtet, wenn "a" 0,7 besetzen wird der Bildschirmbreite?! Datum muss am Ende des Author-Textes ausgerichtet sein, nicht am Recht des Elternteils, welches in Frage gestellt wird ... – snachmsm

+0

Verwenden Sie das maxWidth-Attribut für opinion_author entsprechend dem Bildschirm und entfernen Sie layout_weight daraus. Es wird klappen. Getestet @snachsm – Dhalloo

+0

Nein, es wird nicht funktionieren, Sie haben die Frage falsch verstanden. 'opinion_date' belegt 0.3 der Bildschirmbreite immer, auf dem Tablet wird viel unnötiger leerer Raum sein. theoretisch auf kleineren Geräten Text für das Datum könnte zu lang sein – snachmsm

0

Verwenden Sie Gewichte!

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:weightSum="3"> 
     <TextView 
      android:id="@+id/opinion_author" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:ellipsize="end" 
      android:lines="1" 
      android:maxLines="1" 
      android:layout_weight="2"/> 
     <TextView 
      android:id="@+id/opinion_date" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:lines="1" 
      android:maxLines="1" 
      android:layout_weight="1"/> 
    </LinearLayout> 

Beispiel:

android:weightSum="3" Divies bis in 3 Teile

android:layout_weight="2" gibt 2 Teile an Autor

android:layout_weight="1" gibt 1 Teil bis heute

Spiel mit den Verhältnissen, bis Sie‘ Freut mich!

(oh, android:layout_width="0dp" weil layout_weights überschreibt sie)

+0

Lassen Autor" a "und Datum" 27. Oktober "- wie die Datum wird neben "a" ausgerichtet, wenn "a" 2/3 der Bildschirmbreite einnimmt?! Datum muss am Ende des Autors ausgerichtet sein, nicht am Recht des Elternteils, welches in Frage gestellt wird ... – snachmsm

0

Satzgröße in android:layout_width

wie:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 
    <TextView 
     android:id="@+id/opinion_author" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:lines="1" 
     android:maxLines="1"/> 
    <TextView 
     android:id="@+id/opinion_date" 
     android:layout_width="200dp" 
     android:layout_height="wrap_content" 
     android:lines="1" 
     android:maxLines="1"/> 
</LinearLayout> 

Sie android:layout_weight in Linearlayout Kind verwenden können.

+0

hast du feste Breite gesetzt, hast du die Frage nicht gelesen? Der zweite 'TextView' muss rechts von dem ersten ausrichten, der Text umbrechen muss. visuell sollten sie wie eine Zeile aussehen – snachmsm

+0

Verwenden Sie 'Android: Gravity =" rechts "' in 'LinearLayout' oder Sie können Java-Code verwenden. –

+0

dann wird 'opinion_author' ebenfalls nach rechts ausgerichtet. Der ganze Text sollte links ausgerichtet sein, der Text selbst und die Ansicht – snachmsm

Verwandte Themen