禁用时omipsize editText的内容

时间:2015-05-06 03:58:10

标签: android android-layout

我有一个用户填充EditText的布局,稍后它将被禁用以充当标准TextView。

问题是,ellipsize永远不会在这个EditText上运行。我希望它在文本的末尾显示“...”,当它太大而无法完全显示时,但是我找不到任何方法使它工作,我不知道为什么它没有'吨。

这是我的布局

<RelativeLayout
android:id="@+id/search_container"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_below="@+id/toolbar"
android:background="@drawable/bg_border_bot_clickable"
android:addStatesFromChildren="@+id/ic_edit"
android:animateLayoutChanges="true">

    <View
        android:layout_width="45dp"
        android:layout_height="45dp"
        android:layout_gravity="center_vertical"
        android:layout_marginLeft="5dp"
        android:layout_alignParentLeft="true"
        android:background="@drawable/ic_action_search"
        android:id="@+id/ic_search" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:layout_marginTop="10dp"
        android:layout_marginBottom="10dp"
        android:textColorHint="@color/text_hint"
        android:hint="@string/search_hint"
        android:id="@+id/et_search"
        android:textColor="@android:color/white"
        android:inputType="text|textCapSentences"
        android:ellipsize="end"
        android:singleLine="true"
        android:lines="1"
        android:imeOptions="actionSearch"
        android:background="@drawable/transition_rounded_rectangle"
        android:layout_toLeftOf="@+id/ic_edit"
        android:layout_toRightOf="@+id/ic_search"
        />

<View
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:layout_centerVertical="true"
    android:layout_alignParentRight="true"
    android:background="@drawable/ic_edit"
    android:id="@+id/ic_edit"
    android:visibility="gone"
    android:clickable="true"/>

关于如何实现这一目标的任何想法?

4 个答案:

答案 0 :(得分:5)

将以下属性添加到EditText以使用省略号包装内容。

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

如果您不希望在XML中默认将editable设置为false,则可以通过调用setKeyListener(null)来获得相同的结果。

editText.setKeyListener(null);

答案 1 :(得分:1)

我认为ellipsize不适用于EditText。解决此问题的一种方法是在EditText下面使用带有ellipsize的TextView。最初将TextView可见性设置为GONE。如果要禁用EditText,请将其可见性设置为GONE,将文本分配给TextView并将TextView可见性设置为VISIBLE。

答案 2 :(得分:0)

正如您已经使用过的那样:

android:ellipsize="end"

您还应该添加一件事。从您的java文件中调用setSeleted(true)

EditText edit = (EditText) findViewById(R.id.editTextId);
edit.setSelected(true);

editTextId ID EditText提供给您 <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/editTextId" /> ;

system/user/usergroup

答案 3 :(得分:0)

这是我的解决方案(我已经解决了):

xml:

<androidx.appcompat.widget.AppCompatEditText
    android:id="@+id/et2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_marginHorizontal="10dp"
    android:layout_marginTop="10dp"
    android:background="@drawable/selector_btn_check_red_grey"
    android:hint="Please enter characters"
    android:inputType="text"
    android:lines="1"
    android:paddingHorizontal="10dp"
    android:paddingVertical="5dp"
    android:text="就会角度打开的事开发的急啊看手机发就卡的房多少"
    android:textAllCaps="false"
    android:textColor="@color/red_500"
    android:textSize="15sp" />

java:

    //Initialize to non-editable state
    et2.setKeyListener(null);
    et2.setEllipsize(TextUtils.TruncateAt.END);//setEllipsize只对hint有效果

    et2.setOnFocusChangeListener((v, hasFocus) -> {
        if (hasFocus) {
            //Editable status
            et2.setEllipsize(null);
            et2.setKeyListener(new TextKeyListener(TextKeyListener.Capitalize.NONE, false));
        } else {
            //Not editable[enter image description here][1]
            et2.setKeyListener(null);
            et2.setEllipsize(TextUtils.TruncateAt.END);
        }
    });