Home » Android » android – TextView's ellipsize not working on maxLines = 1

android – TextView's ellipsize not working on maxLines = 1

Posted by: admin June 15, 2020 Leave a comment

Questions:

I really cannot figure out why, but I am only able to get ellipsize working on maxLines=2 and more. I am displaying a few words of description and then a long string with no spaces.

This is how the TextView looks like:

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:textColor="#757575"
                android:text="@string/gcm_not_registered"
                android:maxLines="1"
                android:ellipsize="end"
                android:id="@+id/login_gcmRegistrationTextView"/>

I then programatically set a text to it, but depending on the maxLines limitation, I get two different results:

maxLines=1 maxlines=2

The only thing that changed was the maxLines, why isn’t the line filled in the first picture as well?

How to&Answers:

There are two ways to fix it:

  1. Try to change android:ellipsize="end" attribute to android:ellipsize="marquee".
  2. Try to remove android:maxLines="1" android:ellipsize="end" attributes and add android:singleLine="true" attribute.

Answer:

This code works for me:

In the xml add:

  • Attribute ellipsize: marquee
  • Attribute lines: 1

In java:

<yourTextView>.setHorizontallyScrolling(true);
<yourTextView>.setSelected(true);

If there is another item that request the “focus” you lose the marquee effect. The textView need the state selected to prevent this.

Answer:

Actually the problem is with the spannable text, if you set spannable text this wouldn’t work. Other than this below code works for me

<TextView
    android:id="@+id/tv_second"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="40dp"
    android:layout_margin="5dp"
    android:padding="5dp"
    android:fontFamily="sans-serif-condensed"
    android:textColor="#b3277b"
    android:background="#f7ecff"
    android:layout_below="@id/tv"
    android:text="This is first line\nThis is second line\nThis is third line"
    android:ellipsize="end"
    android:maxLines="2"
    />