2013-03-06 14 views
8

Zastanawiam się, jak wyświetlić zawartość w kilku wierszach TextViewwithout hardcoding the width in the XML.Multilin TextView o szerokości "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> 

Każda myśl mile widziana.

EDYTOWANIE: moim problemem jest to, że gdy tekst przekracza ustawioną szerokość (ponieważ dochodzi do końca ekranu) część tekstu nie jest wyświetlana. Spodziewam się, że tekst zostanie podzielony na dwie linie:

+1

jestem zdezorientowany tym, co chcesz. Gdy TextView osiągnie szerokość elementu nadrzędnego, rozpoczyna się nowa linia. Poza tym gdzie _do_ chcesz, żeby linie się zrywały? Możesz ręcznie przerwać linię za pomocą: 'android: text =" long \ nmultiline \ ntext "'. Możesz także użyć atrybutu 'maxWidth', aby owinąć TextView wokół zawartości, aż uzyskasz pożądaną szerokość. – Sam

+0

Masz rację. Zmieniłem moje pytanie z większą ilością szczegółów. – znat

+0

Czy to nie jest domyślne zachowanie 'TextView'? Co się stanie, jeśli usuniesz 'maxLines' i' singleLine'? – nhaarman

Odpowiedz

12

Chociaż nie mogę odtworzyć problemu braku zwijania, możesz naprawić problem z pozycjonowaniem, używając weight na pierwszym TextView. Stosując następującą XML daje oczekiwany wynik w widoku układu graficznego w 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

Dzięki Niek, to było to. – znat

+0

Co za niedorzeczny błąd! – shimatai

+0

android: singleLine jest teraz przestarzałe –

1

można spróbować

android:inputType="textMultiLine" 

w swoim TextView XML. To działało dla mnie.

1

dodać także

android:minLines="2" 
android:scrollHorizontally="false" 
Powiązane problemy