2013-03-06 7 views
8

Ich frage mich, wie man eine TextView seinen Inhalt auf mehreren Zeilen without hardcoding the width in the XML anzeigen lassen kann.Multiline TextView mit Breite "wrap_content"

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="right" 
     android:orientation="horizontal"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:singleLine="false" 
      android:text="Long multiline text"/> 

     <TextView 
      android:textColor="@color/text_color" 
      android:layout_width="130dp" 
      android:layout_height="wrap_content" 
      /> 

    </LinearLayout> 

Jeder Gedanke willkommen.

BEARBEITEN: Mein Problem ist, dass wenn der Text die eingestellte Breite überschreitet (weil es das Ende des Bildschirms erreicht) ein Teil des Textes nicht angezeigt wird. Ich würde erwarten, dass der Text auf zwei Zeilen aufgeteilt wird

+1

Ich bin verwirrt durch hinzufügen, was Sie wollen. Wenn TextView die Breite des übergeordneten Elements erreicht, werden neue Zeilen erstellt. Anders als wo willst du die Zeilen brechen? Sie können die Zeile manuell mit: 'android: text =" long \ nmultiline \ ntext "' brechen. Sie können auch das Attribut 'maxWidth' verwenden, um den TextView um den Inhalt herum zu verschieben, bis die gewünschte Breite erreicht ist. – Sam

+0

Sie haben Recht. Ich habe meine Frage mit mehr Details bearbeitet – znat

+0

Ist das nicht das Standardverhalten einer 'TextView'? Was passiert, wenn Sie 'maxLines' und' singleLine' entfernen? – nhaarman

Antwort

12

Obwohl ich das Problem nicht umwickeln kann, können Sie das Positionierungsproblem beheben, indem Sie einen weight auf dem ersten TextView verwenden. Unter Verwendung der folgenden XML gibt die erwartete Ausgabe in der grafischen Layout-Ansicht in Eclipse:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" 
    android:orientation="horizontal"> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:singleLine="false" 
     android:text="Long multiline text"/> 

    <TextView 
     android:textColor="@color/text_color" 
     android:layout_width="130dp" 
     android:layout_height="wrap_content" 
     /> 

</LinearLayout> 
+0

Danke Niek, das war es. – znat

+0

Was für ein lächerlicher Bug! – shimatai

+0

Android: SingleLine ist jetzt veraltet –

1

Sie

android:inputType="textMultiLine" 

in Ihrem Textview XML versuchen könnte. Das hat für mich funktioniert.

1

Auch

android:minLines="2" 
android:scrollHorizontally="false" 
Verwandte Themen