android – 使用marquee ellipsize在TextView上设置textIsSelectable会添加椭圆

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

总而言之,它看起来非常粗略.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...