我的应用程序中的屏幕可能会将非常长的字符串发布到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不应该与选取框一起使用 – 选择句柄不随文本一起移动.
总而言之,它看起来非常粗略.