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