webentwicklung-frage-antwort-db.com.de

wie man Text in Textansicht in Android einfügt

Weiß jemand, wie Text in TextView in Android-Plattform umbrochen wird. Wenn der Text in der Textansicht die Bildschirmlänge überschreitet, sollte er in der zweiten Zeile angezeigt werden.

Ich habe folgendes gesucht und ausprobiert:

Android:scrollHorizontally="false",
Android:inputType="textMultiLine",
Android:singleLine="false"

Aber keine Arbeit ..

Kann jemand vorschlagen, wie ich es tun kann ... Ich bin relativ neu auf Android-Plattform ..

66
Sameer

Bei mir trat dieses Problem nur bei Android <4.0 auf

Die Kombination der Parameter, die ich verwendete, war:

Android:layout_weight="1"
Android:ellipsize="none"
Android:maxLines="100"
Android:scrollHorizontally="false"

Die Anzahl der maxLines schien das zufällige letzte Stück zu sein, aus dem mein TextView-Wrap entstand.

45
Guykun

Für den Fall, dass TextView sich in einem TableLayout befindet, besteht die Lösung darin, Android:shrinkColumns="1" auf TableLayout zu setzen. (Ersetzen Sie 1 durch die Spaltennummer, in der sich die TextView befindet, in die Sie einschließen möchten. (0-indexiert))

AFAICT, es werden keine anderen Attribute für TextView benötigt.

Für andere Fälle sehen Sie die anderen Antworten hier.

FWIW, ich hatte es anfangs zur Arbeit bekommen

 <TextView
   Android:id="@+id/inventory_text"
   Android:layout_width="fill_parent"
   Android:layout_weight="1"
   Android:width="0dp"

dies führte jedoch zu einem zusätzlichen leeren Bereich am unteren Rand des Dialogs, in dem sich alles befand.

29
aij

Constraint-Layout

<TextView
Android:id="@+id/some_textview"
Android:layout_width="0dp"
Android:layout_height="wrap_content"

app:layout_constraintLeft_toLeftOf="@id/textview_above"
app:layout_constraintRight_toLeftOf="@id/button_to_right"/>
  • Stellen Sie sicher, dass Ihre Layoutbreite Null ist
  • left/Right-Einschränkungen sind definiert
  • die Layouthöhe von wrap_content ermöglicht die Erweiterung nach oben/unten. 
  • Setze Android:maxLines="2", um die vertikale Expansion zu verhindern (2 ist nur ein Beispiel)
  • Ellipsen sind prob. eine gute Idee mit max Zeilen Android:ellipsize="end"

0dp width ermöglicht links/rechts-Beschränkungen, um die Breite Ihres Widgets zu bestimmen.

Wenn Sie links/rechts festlegen, wird die tatsächliche Breite Ihres Widgets festgelegt, innerhalb derer Ihr Text umgebrochen wird.

Constraint Layout-Dokumente

20
Baker

Sie müssen 2 Parameter verwenden:

  • Android:ellipsize="none": Der Text wird nicht auf die Breite der Textansicht geschnitten

  • Android:scrollHorizontally="false" der Text wird in so vielen Zeilen wie nötig umbrochen

10
Kartaguez

Dies sollte Ihr Problem beheben: Android:layout_weight="1".

6
user755121

OK Leute, die Wahrheit ist irgendwo in der Mitte, weil man das Problem aus der Sicht der Eltern und der Kinder sehen muss. Die Lösung unten funktioniert NUR, wenn der Spinner-Modus = dialog ist, unabhängig von der Android-Version (kein Problem dort ... getestet in VD und DesireS mit Android => 2.2):

  1. . Stellen Sie den Spinner-Modus (den übergeordneten) wie folgt ein:

    Android:spinnerMode="dialog"  
    
  2. Setzt die Eigenschaften der Textansicht (untergeordnete benutzerdefinierte Ansicht) auf:

    Android:layout_weight="1"  
    Android:ellipsize="none"  
    Android:maxLines="100"  
    Android:scrollHorizontally="false"
    

Ich hoffe das funktioniert auch für dich.

5
spinboy

In Android Studio 2.2.3 befindet sich unter der Eigenschaft inputType eine Eigenschaft mit dem Namen textMultiLine. Die Auswahl dieser Option hat ein ähnliches Problem für mich gelöst. Ich hoffe das hilft.

3
user7652193

Wenn Sie Android:maxEms zusammen mit Android:layout_weight="1" auf einen bestimmten Wert setzen, wird der TextView-Befehl umgebrochen, sobald er die angegebene Länge der Ems erreicht.

3
Freddroid

Ich habe gerade an einer TextView innerhalb eines Layouts innerhalb einer RecyclerView gearbeitet. Ich hatte Text abgeschnitten, zB für Read this message, ich sah: Read this. Ich habe versucht, Android:maxLines="2" in der TextView einzustellen, aber es hat sich nichts geändert. Android:lines="2" ergab jedoch Read this in der ersten Zeile und message in der 2. Zeile.

2
Stan Kurdziel

Ich hatte das gleiche Problem. Nach dem Wandel hat es funktioniert -

Android:layout_width="wrap_content"

Die Ellipsis, maxLines oder layout_weight - alles machte keinen Unterschied .. __ Hinweis - Die übergeordnete Breite ist ebenfalls als wrap_content festgelegt.

1
Medha

Verwenden Sie app:breakStrategy="simple" in AppCompatTextView, um das Absatzlayout zu steuern.

Es hat drei konstante Werte

  • ausgewogen 
  • gute Qualität
  • einfach

Entwerfen in Ihrer TextView-XML

<Android.support.v7.widget.AppCompatTextView
        Android:id="@+id/textquestion"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:gravity="center"
        Android:scrollHorizontally="false"
        Android:text="Your Question Display Hear....Your Question Display Hear....Your Question Display Hear....Your Question Display Hear...."
        Android:textColor="@Android:color/black"
        Android:textSize="20sp"
        Android:textStyle="bold"
        app:breakStrategy="simple" />

Wenn Ihr aktuelles Minimum-API-Niveau 23 oder mehr ist, dann in Coding

yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);

Weitere Informationen finden Sie hier BreakStrategy

 Textview breakStrategy image

1
Nirav Bhavsar

Sie können die automatische Größenanpassung der Unterstützungsbibliothek für TextViews verwenden. Überprüfen Sie meine Antwort in einem ähnlichen Thread.

1
blueware

Sie müssen Ihre TextView in einer ScrollView hinzufügen, etwa wie folgt:

<ScrollView Android:id="@+id/SCROLL_VIEW"  
Android:layout_height="150px"   
Android:layout_width="fill_parent">  

<TextView   
   Android:id="@+id/TEXT_VIEW"   
   Android:layout_height="wrap_content"   
   Android:layout_width="wrap_content"   
   Android:text="This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header This text view should act as header" />  
 </ScrollView>
0
Ludovic Landry

Sie müssen lediglich die Breite Ihrer Textansicht festlegen .

Android: layout_width = "60dp"

sie können die Breite nach Belieben ändern. Geben Sie einfach einen langen Satz ein, um zu überprüfen, ob er so funktioniert

Android: text = "Ich möchte unter Softwareingenieuren von Weltrang sein"

0
user8470132

Versuchen Sie @ Guykuns Ansatz, und stellen Sie sicher, dass die Breite der Eltern nicht so eingestellt ist, dass Inhalt umbrochen wird. Dies ist das, was mir gefehlt hat.

0

So einfach geht das:

Android:layout_width="match_parent"
Android:layout_height="wrap_content"

Der Text wird standardmäßig umbrochen

0
Alen Lee

Stellen Sie einfach layout_with auf eine bestimmte Größe ein. Wenn der Text die maximale Breite ausfüllt, wird er in die nächste Zeile überlaufen und einen Umbrucheffekt verursachen.

<TextView
    Android:id="@+id/segmentText"
    Android:layout_marginTop="10dp"
    Android:layout_below="@+id/segmentHeader"
    Android:text="You have the option to record in one go or segments(if you swap options 
    you will loose your current recordings)"
    Android:layout_width="300dp"
    Android:layout_height="wrap_content"/>
0
Frank Odoom

Ich verwende Android 2.2 und meine Textansicht wird automatisch in die nächste Zeile verschoben, wenn der Bildschirm überschritten wird.

Wenn Sie möchten, dass der Text in die nächste Zeile vor dem Ende des Bildschirms wechselt, fügen Sie einfach den Text hinzu (geben Sie einfach Ihren eigenen dp-Wert ein). Dies ist nützlich, wenn Sie rechts vom Text ein Bild haben.

Android:layout_marginRight="52dp"
0
Britc

Seltsam genug - ich habe mein TextView in Code erstellt und es verpackt - obwohl ich nichts außer Standardmaterial eingestellt habe - aber sehen Sie selbst:

LinearLayout.LayoutParams childParams = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,
            LayoutParams.WRAP_CONTENT);
childParams.setMargins(5, 5, 5, 5);

Label label = new Label(this);
label.setText("This is a testing label This is a testing label This is a testing label This is a testing labelThis is a testing label This is a testing label");
label.setLayoutParams(childParams);

Wie Sie der Parameterdefinition entnehmen können, verwende ich ein LinearLayout. Die Klasse Label erweitert einfach TextView - es wird nichts weiter gemacht, außer die Schriftgröße und die Schriftfarbe festzulegen.

Bei der Ausführung im Emulator (API Level 9) wird der Text automatisch über 3 Zeilen verteilt.

0
Ready4Android