Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TextView's ellipsize not working on maxLines = 1

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=1maxlines=2

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

like image 851
Martin Melka Avatar asked Jun 22 '14 13:06

Martin Melka


2 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.
like image 192
erakitin Avatar answered Nov 17 '22 10:11

erakitin


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.

like image 44
wendigo Avatar answered Nov 17 '22 11:11

wendigo