我有一个用户填充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"/>
关于如何实现这一目标的任何想法?
答案 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);
}
});