Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

EditText ellipsize (three dots...)

Unfortunatelly I am not able to make ellipsize for EditText works. Is even possible to put three dots at the end of the text when the text is too long? It is working perfectly for TextiView but not for EditText. Some idea?

 android:id="@+id/ed_email_personalInfo"
 android:layout_width="match_parent"
 android:layout_height="55dp"
 android:background="@color/transparent"
 android:ellipsize="end"
 android:ems="10"
 android:hint="@string/email"
 android:inputType="textEmailAddress"
 android:maxLength="64"
 android:paddingLeft="10dp"
 android:paddingRight="10dp"
 android:singleLine="true"
 android:textColorHint="@color/col9a9a9a"
 android:textSize="15.7sp"
like image 692
AdaMoOo Avatar asked Oct 09 '13 15:10

AdaMoOo


1 Answers

I'm not sure it answers the question (and I guess the original asker is not so interested anymore, after 7 and a half years), but I'm pretty confident my answer will come in handy to anyone stumbling into ellipsis issues with EditText.

Don't try to find any logic in this, but based on the answers from Oleksandr and Mubarak, I figured out the following:

To ellipsize an EditText in XML, use deprecated android:editable="false". In my case:

android:editable="false"
android:focusable="false"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"

No need to mess with android:inputType="none" for the moment. The EditText looks just like a TextView and is properly ellipsized.

It is possible to make the EditText editable (and remove the ellipsis) like this:

editText.setFocusable(true);
editText.setFocusableInTouchMode(true);
editText.setActivated(true);
editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS); // or whatever fits your needs
editText.setSingleLine(true);
editText.setEllipsize(null);
editText.requestFocus();

Your can then restore the EditText to its original state (ie. disguised as a TextView and properly ellipsized) like this:

editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
editText.setActivated(false);
editText.setSingleLine(true);
editText.setKeyListener(null); // this is the key
editText.setEllipsize(TextUtils.TruncateAt.END);
like image 112
Pat Lee Avatar answered Sep 27 '22 01:09

Pat Lee