Ellipsize 在 TextView 的末尾不显示三个点

Posted

技术标签:

【中文标题】Ellipsize 在 TextView 的末尾不显示三个点【英文标题】:Ellipsize not show three dots at end of TextView 【发布时间】:2020-11-17 00:15:54 【问题描述】:

我知道有很多类似的问题,我也阅读了很多答案,但没有一个是我想要的。我几乎都试过了。以下是我的尝试(我为每次尝试设置了ellipsize=end):

    singleLine=true(工作) lines=1(不工作) maxLines=1(不工作) 将 textView 的宽度设置为特定值(无效) 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_
    android:layout_>

    <ImageView
        android:id="@+id/image"
        android:layout_
        android:layout_
        android:adjustViewBounds="true"
        android:scaleType="centerCrop"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:layout_
        android:layout_
        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>

【问题讨论】:

发布您的 xml 代码 我做了很多尝试,所以我不能作为代表发布任何尝试...除了必要的 layout_height 和 layout_width 以及约束作为约束布局的子项之外,我没有添加任何其他 xml属性 @Kennen 我们向您询问您布局的整个 xml。不仅仅是 TextView。 这能回答你的问题吗? 1.***.com/questions/19099296/…。 2.***.com/questions/19675331/… 【参考方案1】:

我在之前开发的项目中使用了ellipsize=true,在那个项目中效果很好,我对比了当前项目的代码和之前的代码。彼此之间没有区别,所以对当前项目感到困惑,所以我从github上拉了上一个项目并运行它,发现它在我的xml渲染器中不起作用,但它在我的手机上起作用。

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

【讨论】:

【参考方案2】:

这对我来说很好用

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

【讨论】:

不,我试过你的代码,它没有用,和我第二次尝试的结果一样 发布你的完整xml让我看看【参考方案3】:

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

<TextView
            android:layout_
            android:layout_
            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" />

【讨论】:

嘿兄弟,这是我的尝试 3,我尝试将 maxLines=1 更改为 maxLines=multiple lines,仍然不行【参考方案4】:

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

如果您希望在文本末尾始终显示省略号,则必须创建一个连接 (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_
        android:layout_
        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_
        android:layout_
        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" />

【讨论】:

嗨@Johnathan Yesid,我发布的xml代码中的文本肯定超出了允许的长度,但它仍然不起作用。我在我参与的另一个项目中使用了这个xml属性,它工作正常,所以我只是感到很困惑,不想以编程方式实现这一点,无论如何,谢谢你的帮助,如果没有其他出路,我会尝试一下【参考方案5】:

在java文件中设置属性

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

【讨论】:

以上是关于Ellipsize 在 TextView 的末尾不显示三个点的主要内容,如果未能解决你的问题,请参考以下文章

TextView系列:ellipsize属性详解 android:ellipsize=“marquee“(跑马灯效果)

TextView ellipsize 属性使用,省略号不显示的问题

应用ellipsize时,获取textview中可见字符的数量

Ellipsize 不适用于自定义 listView 中的 textView

Android - TextView Ellipsize属性

使用 Databinding 和 maxlines 使 ellipsize 在 TextView 中不起作用