EditText ellipsize(三个点......)

Ada*_*oOo 8 forms android longtext android-edittext

不幸的是,我无法为EditText工作进行ellipsize.当文字太长时,甚至可以在文本的末尾加上三个点?它适用于TextiView,但不适用于EditText.有些想法?

 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"
Run Code Online (Sandbox Code Playgroud)

Mub*_*rak 18

设置此属性以编辑文本.Elipsize正在使用禁用编辑文本

    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:singleLine="true"
    android:editable="false"
Run Code Online (Sandbox Code Playgroud)

  • android:editable属性已被弃用,Google建议使用android:inputType.但是,根据我的测试,如果存在android:inputType,它将不再起作用 (4认同)

Ole*_*ndr 15

你必须删除android:inputType属性.

如果定义了inputType,则Ellipsize不起作用.

  • 这个答案不起作用。如果这样做也很荒谬,因为为什么Android会根据输入类型显示省略号? (2认同)

Pat*_*Lee 6

我不确定它是否回答了问题(我猜最初的提问者在七年半之后不再那么感兴趣了),但我非常有信心我的答案对于任何遇到 EditText 省略号问题的人都会派上用场。

不要试图在其中找到任何逻辑,但根据 Oleksandr 和 Mubarak 的答案,我得出以下结论:

要省略 XML 中的 EditText,请使用已弃用的android:editable="false". 就我而言:

android:editable="false"
android:focusable="false"
android:singleLine="true"
android:maxLines="1"
android:ellipsize="end"
Run Code Online (Sandbox Code Playgroud)

android:inputType="none"暂时没必要去折腾。EditText 看起来就像 TextView 并且被适当地椭圆化。

可以使 EditText 可编辑(并删除省略号),如下所示:

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();
Run Code Online (Sandbox Code Playgroud)

然后,您可以将 EditText 恢复到其原始状态(即伪装成 TextView 并正确省略),如下所示:

editText.setFocusable(false);
editText.setFocusableInTouchMode(false);
editText.setActivated(false);
editText.setSingleLine(true);
editText.setKeyListener(null); // this is the key
editText.setEllipsize(TextUtils.TruncateAt.END);
Run Code Online (Sandbox Code Playgroud)


use*_*613 3

在 EditText 中可能不可能(除非您创建自己的视图)。我认为默认行为(对于 singleLine EditText)是当文本不适合视图时可以向侧面滚动文本。