wake-up-neo.com

Multiline TextView in Android?

Ich habe unten in xml gefallen

<TableRow>
    <TextView Android:id="@+id/address1"
        Android:layout_width="fill_parent" 
        Android:layout_height="wrap_content"
        Android:gravity="left"
        Android:maxLines="4" 
        Android:singleLine="false"              
        Android:text="Johar Mor, Gulistan-e-Johar, Karachi" >
    </TextView> 
</TableRow>

Es funktioniert nicht für multiline und ich verwende TableLayout...

was ist also ein Fehler, den ich hier mache?

132

Wenn der in TextView eingegebene Text kurz ist, wird er nicht automatisch auf vier Zeilen erweitert. Wenn Sie möchten, dass TextView always vier Zeilen hat, unabhängig von der Länge des Textes, setzen Sie das Android:lines-Attribut:

<TextView
    Android:id="@+id/address1"
    Android:gravity="left"
    Android:layout_height="fill_parent"
    Android:layout_width="wrap_content"
    Android:maxLines="4"
    Android:lines="4"
    Android:text="Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat."></TextView>

Sie können dies mit TableRow tun, siehe Code

<TableRow >
        <TextView
            Android:id="@+id/tv_description_heading"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:padding="8dp"
            Android:text="@string/rating_review"
            Android:textColor="@color/black"
            Android:textStyle="bold" />

        <TextView
            Android:id="@+id/tv_description"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:gravity="left"
            Android:maxLines="4"`enter code here`
            Android:padding="8dp"
            Android:text="The food test was very good."
            Android:textColor="@color/black"
            Android:textColorHint="@color/hint_text_color" />
    </TableRow>
181
Zarah

Ich habe versucht, eine der obigen Antworten zu kommentieren, aber ich habe nicht genug Ansehen.
Ich dachte nur, ich würde das hinzufügen, wenn Sie Folgendes verwenden:

Android:inputType="textMultiLine" 

Dann ist die Ansicht nicht mehr anklickbar. Ich habe versucht, mehrzeilige Textansichten in meinem Menü der Schublade zu erhalten, die offensichtlich auf Klicks reagieren müssen.

Der Android:singleLine="false" hat aber gut funktioniert.

97
Ryan

Ich mag keine der Antworten. Legen Sie einfach den inputType fest und das TextView passt sich seinem Inhalt an

<TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:inputType="textMultiLine"/>

Getestet an einem Nexus One (2.3) und Nexus 4 (4.4)

29
Maragues

Fügen Sie einfach Textansicht in ScrollView hinzu

<ScrollView
           Android:layout_width="fill_parent"
           Android:layout_height="wrap_content"
           Android:layout_weight="1"
           Android:layout_marginLeft="15dp"
           Android:layout_marginRight="15dp"
           Android:layout_marginTop="20dp"
           Android:fillViewport="true">

           <TextView
               Android:id="@+id/txtquestion"
               Android:layout_width="fill_parent"
               Android:layout_height="match_parent"
               Android:background="@drawable/abs__dialog_full_holo_light"
               Android:lines="20"
               Android:scrollHorizontally="false"
               Android:scrollbars="vertical"
               Android:textSize="15sp" />

       </ScrollView>
10
Pravin Bhosale

Fügen Sie einfach "\ n" in Ihren Text ein ... kein zusätzliches Attribut erforderlich :)

          <TextView
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:textAppearance="?android:attr/textAppearanceLarge"
            Android:text="Pigeon\nControl\nServices"
            Android:id="@+id/textView5"
            Android:layout_gravity="center"
            Android:paddingLeft="12dp"/> 
8
Naunidh Singh

Die Lösung, die die Anzahl der Zeilen in der Textansicht erzwingt, gefällt mir nicht. Ich schlage vor, Sie lösen es über die Lösung hier vorgeschlagen . Wie ich sehe, hat das OP auch Schwierigkeiten, die Textansicht in der Tabelle als richtig erscheinen zu lassen, und shrinkColumns ist die richtige Anweisung, um das gewünschte Ziel zu erreichen.

5
Boris Strandjev

Versuchen Sie, mit EditText zu arbeiten, indem Sie es unklickbar und unscharf machen. Außerdem können Sie eine Bildlaufleiste anzeigen und die Unterleiste von EditText löschen.
Hier ist ein Beispiel:

<EditText
Android:id="@+id/my_edit_text"
Android:layout_width="match_parent"
Android:layout_height="wrap_parent"
Android:inputType="textMultiLine"                   <!-- multiline -->
Android:clickable="false"                         <!-- unclickable -->
Android:focusable="false"                         <!-- unfocusable -->
Android:scrollbars="vertical"     <!-- enable scrolling vertically -->
Android:background="@Android:color/transparent"   <!-- hide the underbar of EditText -->
/>  

Hoffe das hilft :)

5
Khalil Meg

Die beste Antwort, die ich für Multiline TextView gefunden habe, ist:

Android:inputType="textMultiLine"
4
Bhuvan Bhatt

Ich habe gelernt, "\ n" zwischen den Wörtern einzufügen, wo es in die nächste Zeile gebremst werden soll. Zum Beispiel...

<TextView
    Android:id="@+id/time"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:textAlignment="center"
    Android:text="M-F 9am-5pm \n By Appointment Only" />

Die\n zwischen 5pm und By erlaubten mir mehr Kontrolle darüber, wo meine nächste Zeile beginnen und enden wollte.

2
Eduardo Lopez

Ersetzen Sie zunächst "\n" durch seine Html-äqualvalente "&lt;br&gt;" Rufen Sie dann Html.fromHtml() für die Zeichenfolge auf. Befolgen Sie die folgenden Schritte:

String text= model.getMessageBody().toString().replace("\n", "&lt;br&gt;")
textView.setText(Html.fromHtml(Html.fromHtml(text).toString()))

Das funktioniert perfekt.

2
Gulzar Bhat

Ich benutzte: 

TableLayout tablelayout = (TableLayout) view.findViewById(R.id.table);
tablelayout.setColumnShrinkable(1,true);

es hat für mich funktioniert. 1 ist die Anzahl der Spalten.

1

sie können Android verwenden: inputType = "textMultiLine"

  <TextView Android:id="@+id/address1"
    Android:layout_width="fill_parent" 
    Android:layout_height="wrap_content"
    Android:gravity="left"
    Android:maxLines="4" 
    Android:inputType="textMultiLine"
    Android:text="Johar Mor, Gulistan-e-Johar, Karachi" />
1
Enakhi
You can do this with TableRow, see below code

<TableRow >
    <TextView
        Android:id="@+id/tv_description_heading"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:gravity="left"
        Android:padding="8dp"
        Android:text="@string/rating_review"
        Android:textColor="@color/black"
        Android:textStyle="bold" />

    <TextView
        Android:id="@+id/tv_description"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:gravity="left"
        Android:maxLines="4"`enter code here`
        Android:padding="8dp"
        Android:text="The food test was very good."
        Android:textColor="@color/black"
        Android:textColorHint="@color/hint_text_color" />
</TableRow>
0