我的应用程序中的屏幕可能会将很长的字符串发布到TextView
中。对于这种情况,我设置了android:ellipsize="marquee"
,因此文本将跨整个TextView选框。
但是,我决定我也希望此文本是可选的(android:textIsSelectable="true"
)。在大多数情况下,这是没有问题的。文本小于TextView,用户可以选择它。但是,如果我具有textIsSelectable
属性,并且文本大于TextView,则文本将变为椭圆形而不是完整的字符串。 仍将选取框,但不再显示全文。它将其剪切并显示一个椭圆。
<TextView
android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:ellipsize="marquee"
android:focusable="true"
android:gravity="center_vertical"
android:singleLine="true"
android:textIsSelectable="true">
有没有一种方法可以选择文本并仍然在选框中保留整个字符串(无椭圆)?
最佳答案
不能确定这是否是错误。
<TextView
android:layout_width="wrap_content"
android:layout_height="?android:attr/listPreferredItemHeightSmall"
android:ellipsize="start"
android:focusable="true"
android:gravity="center_vertical"
android:singleLine="true"
android:textIsSelectable="true"/>
请注意,我们将在xml中设置
android:ellipsize="start"
-稍后对此进行更多说明。mTextView = (TextView) findViewById(R.id.tv);
mTextView.post(new Runnable() {
@Override
public void run() {
mTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
mTextView.setSelected(true);
}
});
setEllipsize(TruncateAt)
检查当前ellipsize
值是否与提供的值相同。为了解决这个问题,我们在xml中提供android:ellipsize="start"
。这样,TextView
以后就可以接受TextUtils.TruncateAt.MARQUEE
了。现在,即使这可行,我还是建议您不要这样做。您将能够查看原因-尝试此代码。似乎
textIsSelectable
不应该与marquee
一起使用-选择句柄不会与文本一起移动。总而言之,它看起来非常粗略。