android 编辑文本省略号(三点...)

kiz8lqtg  于 2023-03-06  发布在  Android
关注(0)|答案(6)|浏览(221)

不幸的是,我不能为EditText的作品制作椭圆尺寸。当文本太长的时候,甚至可以在文本的末尾放三个点吗?它在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"
7z5jn7bk

7z5jn7bk1#

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

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

nlejzf6q2#

您必须删除android:inputType属性。

如果定义了inputType,则椭圆大小不起作用。

carvr3hs

carvr3hs3#

在EditText中可能不太可能(除非你创建了自己的视图)。我认为默认的行为(对于单行EditText)是当文本不能容纳在视图中时,你可以横向滚动文本。

3lxsmp7m

3lxsmp7m4#

我不确定它是否回答了这个问题(我猜最初的提问者在7年半之后不再那么感兴趣了),但我很有信心我的答案会对任何在EditText中遇到省略号问题的人派上用场。
不要试图找到任何逻辑在这一点上,但基于从奥列克桑德和穆巴拉克的答案,我想出了以下:
要省略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);
ghhkc1vu

ghhkc1vu5#

EditText是TextView的子类,你可以重写edittext方法使它像textview一样工作我试了一下,它工作了

class CustomTextInputEditTextView: TextInputEditText {
constructor(context: Context, attributeSet: AttributeSet?): super(context, attributeSet) {

}

override fun getDefaultEditable(): Boolean {
    return false
}

override fun getDefaultMovementMethod(): MovementMethod? {
    return null
}

}

<com.CustomTextInputEditTextView
            android:cursorVisible="false"
            android:ellipsize="end"
            android:lines="1"
            android:inputType="none" />
kyvafyod

kyvafyod6#

您需要编写一个扩展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);

                }
}

    }
}

相关问题