Android文本视图多行省略号显示

4

我正在尝试在具有多行文本的textview末尾获得一个省略号。 "..."显示出来了,但是它在文本中的最后一个空格处,并且还跟随其他字符。如何确保 "..." 总是在末尾。

请参考示例图片enter image description here

XML布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:tools="http://schemas.android.com/tools"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginRight="5dp"
android:orientation="horizontal" >

<TextView
    android:id="@+id/nfDateMonth"
    android:layout_width="64dp"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="8dp"
    android:layout_marginTop="2dp"
    android:background="@drawable/topsegment"
    android:gravity="center"
    android:text="APR"
    android:textAllCaps="true"
    android:textColor="#f2e606"
    android:textSize="22sp"
    android:textStyle="bold" />

<TextView
    android:id="@+id/nfDateDate"
    android:layout_width="64dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/nfDateMonth"
    android:layout_marginBottom="10dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="8dp"
    android:background="@drawable/bottomsegment"
    android:gravity="center"
    android:text="28"
    android:textSize="22sp" />

<TextView
    android:id="@+id/nfTitle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginBottom="2dp"
    android:layout_marginTop="0dp"
    android:layout_toRightOf="@+id/nfDateMonth"
    android:text="Half Marathon"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textSize="16sp" />

<TextView
    android:id="@+id/nfContent"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/nfTitle"
    android:layout_gravity="left"
    android:layout_marginBottom="2dp"
    android:layout_marginRight="16dp"
    android:layout_marginTop="2dp"
    android:layout_toRightOf="@+id/nfDateDate"
    android:ellipsize="end"
    android:maxLines="2"
    android:text="Content\nline two line three sadsa dsd dsa dsd big big big sd sad sad sadsadsad asd sad as d asd as das das das das da sd asd asd one two three four five sixx seven"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textSize="12sp" />

</RelativeLayout>

我运行了你的代码,但没有发现你提到的问题。 - Spring Breaker
可能是设备的问题,因为正如图像所示,我明显遇到了这个问题。 - BENBUN Coder
1个回答

2

今天我也遇到了同样的问题。这可能是 TextView 或 TextUtils(方法 ellipsize)中的 bug。在我的情况下,它是由带有换行符的文本引起的。

有两种解决方案:

  1. 仅获取第一行:
String longText = "...";
String body = new Scanner(longText).nextLine();
textView.setText(body);

2. 移除文本中的所有换行符

String longText = "...";
String body = longText.replace("\n", "").replace("\r", "");
textView.setText(body);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接