2013-03-06 6 views
8

Mi chiedo come avere un TextView visualizzare il suo contenuto su più righe without hardcoding the width in the XML.Multiline TextView con larghezza "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> 

Qualsiasi pensiero benvenuto.

EDIT: il mio problema è che quando il testo supera la larghezza impostata (perché raggiunge la fine dello schermo) una parte del testo non viene semplicemente visualizzata. Mi aspetto che il testo sia suddiviso su due righe

+1

Sono confuso da ciò che si desidera. Quando TextView raggiunge la larghezza del suo genitore, inizia una nuova riga. A parte questo, dove vuoi che le linee si rompano? È possibile interrompere manualmente la linea con: 'android: text =" long \ nmultiline \ ntext "'. Puoi anche utilizzare l'attributo 'maxWidth' per avvolgere il TextView attorno al contenuto fino alla larghezza desiderata. – Sam

+0

Hai ragione. Ho modificato la mia domanda con ulteriori dettagli – znat

+0

Non è il comportamento predefinito di un 'TextView'? Cosa succede se rimuovi 'maxLines' e' singleLine'? – nhaarman

risposta

12

Anche se non riesco a riprodurre il problema di non involucro, è possibile risolvere il problema di posizionamento utilizzando un TextViewTextView. Utilizzando il seguente XML dà i risultati attesi nella visualizzazione grafica layout 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

Grazie Niek, era così. – znat

+0

Che insetto ridicolo! – shimatai

+0

android: singleLine è ora deprecato –

1

Si potrebbe provare

android:inputType="textMultiLine" 

nel vostro XML TextView. Questo ha funzionato per me.

1

aggiungere anche

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