How to wrap text in textview in Android

AndroidTextviewWord Wrap

Android Problem Overview


Does any one know how to wrap text in TextView in Android platform. i.e if the text in textview exceed the screen length it should be displayed in the second line.

I have searched and tried the following:

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

But none work..

Can anyone suggest how can I do it.

Android Solutions


Solution 1 - Android

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"/>
  • Ensure your layout width is zero
  • left / right constraints are defined
  • layout height of wrap_content allows expansion up/down.
  • Set android:maxLines="2" to prevent vertical expansion (2 is just an e.g.)
  • Ellipses are prob. a good idea with max lines android:ellipsize="end"

0dp width allows left/right constraints to determine how wide your widget is.

Setting left/right constraints sets the actual width of your widget, within which your text will wrap.

Constraint Layout docs

Solution 2 - Android

For me this issue only occurred on Android < 4.0

The combination of parameters I used were:

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

The maxLines count seemed to be the random final piece that made my TextView wrap.

Solution 3 - Android

For the case where the TextView is inside a TableLayout, the solution is to set android:shrinkColumns="1" on the TableLayout. (Replace 1 with the column number the TextView you want to wrap is in. (0-indexed))

AFAICT, no other attributes are needed on the TextView.

For other cases, see the other answers here.

FWIW, I had initially gotten it to sort of work with

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

but that resulted in some extra empty space at the bottom of the Dialog it was all in.

Solution 4 - Android

>Use app:breakStrategy="simple" in AppCompatTextView, it will control over paragraph layout.

It has three constant values

  • balanced
  • high_quality
  • simple

> Designing in your 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" />

>If your current minimum api level is 23 or more then in Coding

yourtextview.setBreakStrategy(Layout.BREAK_STRATEGY_SIMPLE);

For more refrence refer this BreakStrategy

Textview breakStrategy image

Solution 5 - Android

You must use 2 parameters :

  • android:ellipsize="none" : the text is not cut on textview width

  • android:scrollHorizontally="false" the text wraps on as many lines as necessary

Solution 6 - Android

This should fix your problem: android:layout_weight="1".

Solution 7 - Android

OK guys the truth is somewhere in the middle cause you have to see the issue from the parent's view and child's. The solution below works ONLY when spinner mode = dialog regardless of Android version (no problem there.. tested it in VD and DesireS with Android =>2.2) :

  1. .Set you spinner's(the parent) mode like :

    android:spinnerMode="dialog"  
    
  2. Set the textview's(child custom view) properties to :

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

I hope this works for you also.

Solution 8 - Android

By setting android:maxEms to a given value together with android:layout_weight="1" will cause the TextView to wrap once it reaches the given length of the ems.

Solution 9 - Android

In Android Studio 2.2.3 under the inputType property there is a property called textMultiLine. Selecting this option sorted out a similar problem for me. I hope that helps.

Solution 10 - Android

Try @Guykun's approach

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

Also, make sure that parents width is not set to wrap content. This is the thing that I was missing.

Solution 11 - Android

Just was working on a TextView inside a layout inside a RecyclerView. I had text getting cut off, ex, for Read this message, I saw: Read this. I tried setting android:maxLines="2" on the TextView, but nothing changed. However, android:lines="2" resulted in Read this on first line and message on the 2nd.

Solution 12 - Android

I had the same problem. Following change made it work -

android:layout_width="wrap_content"

The ellipsis, maxLines, or layout_weight - all didn't make any difference. Note - The parent width is also set as wrap_content.

Solution 13 - Android

All you have to do is to set your textview width.

android:layout_width="60dp"

you can change the width to your choice. Just type long sentence to check if it working like this

android:text="i want to be among world class software engineer"

Solution 14 - Android

Strange enough - I created my TextView in Code and it wrapped - despite me not setting anything except standard stuff - but see for yourself:

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);

As you can see from the params definition I am using a LinearLayout. The class Label simply extends TextView - not doing anything there except setting the font size and the font color.

When running it in the emulator (API Level 9) it automatically wraps the text across 3 lines.

Solution 15 - Android

I am using Android 2.2 and my textview will automatically goto the next line if it exceeds the screen.

If you would like to have the text goto the next line before the end of the screen, just add in (just put in your own dp value). This will be useful if you have a picture on the right of the text.

android:layout_marginRight="52dp"

Solution 16 - Android

Just set layout_with to a definate size, when the text fills the maximum width it will overflow to the next line causing a wrap effect.

<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"/>

Solution 17 - Android

The trick is with the textView width, try to make it dedicated number like:

<TextView
    android:layout_width="300dp"
    android:layout_height="wrap_content"/>

I've tried many solutions without any result, I've tried:

    android:ellipsize="none"
    android:scrollHorizontally="false"

the only one thing triggred the wrap option is the dedicated width

Solution 18 - Android

You need to add your TextView in a ScrollView with something like this :

<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>

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionSameerView Question on Stackoverflow
Solution 1 - AndroidBakerView Answer on Stackoverflow
Solution 2 - AndroidGuykunView Answer on Stackoverflow
Solution 3 - AndroidaijView Answer on Stackoverflow
Solution 4 - AndroidNirav BhavsarView Answer on Stackoverflow
Solution 5 - AndroidKartaguezView Answer on Stackoverflow
Solution 6 - Androiduser755121View Answer on Stackoverflow
Solution 7 - AndroidskourkosView Answer on Stackoverflow
Solution 8 - AndroidFreddroidView Answer on Stackoverflow
Solution 9 - Androiduser7652193View Answer on Stackoverflow
Solution 10 - AndroidShailendra SuriyalView Answer on Stackoverflow
Solution 11 - AndroidStan KurdzielView Answer on Stackoverflow
Solution 12 - AndroidMedhaView Answer on Stackoverflow
Solution 13 - AndroidAkindevView Answer on Stackoverflow
Solution 14 - AndroidReady4AndroidView Answer on Stackoverflow
Solution 15 - AndroidBritcView Answer on Stackoverflow
Solution 16 - AndroidFrank OdoomView Answer on Stackoverflow
Solution 17 - AndroidAhmed Khalid KadhimView Answer on Stackoverflow
Solution 18 - AndroidLudovic LandryView Answer on Stackoverflow