android 如果启用了文本选择,如何省略文本?

tp5buhyn  于 2023-01-19  发布在  Android
关注(0)|答案(1)|浏览(121)

我创建了一个有两个文本视图的布局,以显示启用文本选择的一些内容。当尝试省略文本时,它不起作用。如果我禁用文本选择,省略将按预期工作。如何在启用文本选择的情况下省略文本?
另外,当添加paddingRight属性到第一个文本视图(textview1)时,第二个文本视图(textview2)在第一行被截断,即使我将省略号配置为“end”。如何解决第一行截断问题?

XML布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/textview1"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:includeFontPadding="false"
        android:paddingRight="15dp"
        android:singleLine="true"
        android:text="Single Line 123456789 123456789"
        android:textColor="#f00"
        android:textIsSelectable="true"
        android:textSize="16dp" />

    <TextView
        android:id="@+id/textview2"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="1dp"
        android:ellipsize="end"
        android:includeFontPadding="false"
        android:maxLines="2"
        android:text="MultiLine123456789123456789123456789123456789 123456789123456789123456789"
        android:textColor="#000"
        android:textIsSelectable="true"
        android:textSize="16dp" />

</LinearLayout>

谢谢你能提供的任何帮助。

fcipmucu

fcipmucu1#

一个老问题,但希望这能帮助那些来这里寻找答案的人(就像我一样)。
看起来android:textIsSelectableandroid:ellipsize完全不兼容;可选择的文本不会省略号,句号。因此,这里有一个解决方法:
1.在布局XML中,继续放置android:ellipsize="end",但 * 不要 * 包括android:textIsSelectable="true"
1.视图膨胀后,在TextView上运行以下Kotlin代码:

myTextView.doOnNextLayout {
        myTextView.text = myTextView.layout.text
        myTextView.setTextIsSelectable(true)
    }

这里的关键字是layout.text:这是myTextView内容的省略版本,所以我们在这里手动省略了text,然后我们可以安全地使它可选。

相关问题