Ellipsize 不在 TextView 末尾显示三个点

Ellipsize not show three dots at end of TextView

我知道有很多类似的问题,我也看了很多答案,但是其中none是我想要的。我几乎都试过了。以下是我的尝试(每次尝试我设置ellipsize=end):

  1. singleLine=true(有效)
  2. lines=1(无效)
  3. maxLines=1(无效)
  4. 将 textView 的宽度设置为特定值(无效)
  5. ScrollHorizontally=true(无效)

只有第一个有效,但我想要多行文本而不是一行

有没有其他方法可以做到这一点

任何帮助将不胜感激

编辑:

这是我的 xml 布局(尝试 2):

<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <ImageView
        android:id="@+id/image"
        android:layout_width="match_parent"
        android:layout_height="@dimen/x150"
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@color/colorPrimary"
        android:ellipsize="end"
        android:lines="1"
        android:text="hello hello hello hello hello hello hello hello hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/image" />
</androidx.constraintlayout.widget.ConstraintLayout>

这对我来说很好用

<TextView
            android:id="@+id/textView8"
            android:layout_width="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            android:ellipsize="end"
            android:lines="3"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            android:text="TextVie mbdfdsvffmnsvfbnsddfdfvfndvfnbdvfbndsvfnsdvfnsdvfnsdvfnsbfjnbdsvjfvdsjhfvsdjhvsdsdvfjdvfjsdvfjhsdvfjsdvfjdhsvfhjdvfjdvfhjdvfjdsvfjsvfhjsdvfjsdvfjsdvfjsdvfjsdvfnsdfvbnsdvfbnsdvfnsdvfnsdbvfnbsdvnsdvsdvbfsdnbfw"
            android:textSize="16dp" />

尝试添加 maxLines 和您想要的行数

<TextView
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:background="@color/colorPrimary"
            android:ellipsize="end"
            android:maxLines="4"
            android:text="hello\n hello\n hello\n hello hello hello hello hello hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/image" />

在java文件中设置属性

yourTextView.setEllipsize(TextUtils.TruncateAt.END);
yourTextView.setMaxLines(3);
yourTextView.setText("long text");

请注意,只有当文本大小超过允许的行数或文本大小宽度时,才会显示省略号;否则不显示。

如果您想要在文本末尾始终显示省略号,则必须创建一个连接 (text + "...") 的方法。

像这样:

TextView textView = findViewById(R.id.textView);
    String valueText = textView.getText().toString();
    if (!valueText.isEmpty()) valueText = String.format("%s...", valueText);
    textView.setText(valueText);

下面的例子显示了上面提到的省略号,第一个文本超出了文本视图的大小,第二个没有。

<TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:ellipsize="end"
        android:maxLines="2"
        android:text="hello hello hello hello hello hdsafsfdfdel sdsdasdsadasdsadsadasdasdsadsaadssadsadsadsadsasadsadsadsadsadsadsaadsalo hello hello hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:layout_constrainedWidth="true"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/image" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:ellipsize="end"
        android:maxLines="2"
        android:text="hello hello hello hello hello hel sfdsafsafsfasfsafsafsahhhhhhhhhhhhhh"
        android:textColor="@android:color/black"
        android:textSize="16sp"
        app:layout_constrainedWidth="true"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView" />

我在之前开发的项目中使用了ellipsize=true,并且在那个项目中运行良好,我将当前项目的代码与之前的代码进行了比较。彼此之间没有区别,所以我对当前项目感到困惑,所以我从 github 和 运行 中拉出以前的项目,发现它在我的 xml 中不起作用渲染器,但它适用于我的 phone.

最后发现是渲染器的问题。我找到了升级渲染器的按钮。现在我用的是最新的渲染器,现在在redener中也能正常工作了。