使用选框椭圆形在TextView上设置textIsSelectable会添加椭圆

And*_*rew 8 android textview

我的应用程序中的一个屏幕可能会发送一个非常长的字符串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">
Run Code Online (Sandbox Code Playgroud)

有没有办法让文本可选并仍然保持整个字符串(没有椭圆)?

Vik*_*ram 2

无法确定这是否是一个错误。

<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"/>
Run Code Online (Sandbox Code Playgroud)

请注意,我们android:ellipsize="start"在 xml 中进行设置 - 稍后将详细介绍。

mTextView = (TextView) findViewById(R.id.tv);
mTextView.post(new Runnable() {
    @Override
    public void run() {
        mTextView.setEllipsize(TextUtils.TruncateAt.MARQUEE);
        mTextView.setSelected(true);
    }
});
Run Code Online (Sandbox Code Playgroud)

setEllipsize(TruncateAt)检查当前ellipsize值是否与提供的值相同。为了解决这个问题,我们android:ellipsize="start"以 xml 形式提供。这样以后TextView接受就没有问题了。TextUtils.TruncateAt.MARQUEE

现在,即使这有效,我还是建议你不要这样做。一旦你尝试了这段代码,你就会明白为什么。它似乎textIsSelectable 不应该与marquee- 选择手柄不随文本一起移动。

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