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

时间:2013-10-09 15:31:08

标签: android forms android-edittext longtext

不幸的是,我无法为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"

5 个答案:

答案 0 :(得分:16)

将此属性设置为edittext。 Ellipsize正在使用禁用编辑文本

    android:lines="1"
    android:scrollHorizontally="true"
    android:ellipsize="end"
    android:singleLine="true"
    android:editable="false"

答案 1 :(得分:15)

您必须删除android:inputType属性。

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

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

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

暂时不需要麻烦 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();

然后您可以像这样将 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);

答案 4 :(得分:-3)

您需要编写一个扩展EditText的新类。例如:

MyEditTextEllipsize extends EditText{

private String dotsString;

private String storeString;

public MyEditTextEllipsize(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

@Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        super.onFocusChanged(focused, direction, previouslyFocusedRect);

         if(focused)

     {
       setText(storeString);
      }else {
             String NOW = getText().toString();
                storeString = NOW;
            if (NOW != null && getWidth() <= getTextSize() * NOW.length()) {

                    dotsString = NOW.substring(0, (int) (getWidth() / getTextSize())) + "...";

                    setText(dotsString);

                }
}

    }
}