How can I show ellipses on my TextView if it is greater than the 1 line?

我有以下的布局不工作:

<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:id="@+id/experienceLayout"
android:background="#ffffff"
android:layout_height="match_parent"
android:paddingLeft="6dp"
android:paddingRight="6dp"
android:paddingBottom="6dp"
android:paddingTop="6dp">


<TextView
android:layout_weight="1"
android:id="@+id/experienceLabel"
android:text="Experience"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_width="wrap_content"
android:textStyle="bold">
</TextView>


<TextView
android:id="@+id/experienceTextView"
android:text="TextView"
android:layout_height="wrap_content"
android:textColor="#000000"
android:layout_width="wrap_content"
android:ellipsize="end"
android:lines="1"
android:maxLines="1"
android:singleLine="true"
android:fadeScrollbars="false">
</TextView>


</LinearLayout>
93701 次浏览

这是一个常见的问题:

android:scrollHorizontally="true"
android:ellipsize="end"
android:maxLines="1"

水平卷轴是一种特殊的酱汁。

这也将使一个椭圆形的单线

 android:singleLine="true"

它在多个设备/API 上的工作方式如下所示(tv 就是你的 TextView) :

    if (tv.getLineCount() > 1) {
int lineEndIndex = tv.getLayout().getLineEnd(0);
String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
tv.setText(text);
}

用这个

android:ellipsize="end"
android:singleLine="true"

不要在没有完全了解输出的情况下使用它

android:ellipsize="end"
android:maxLines="1"

当您使用 maxlines = 1时,它将在一段时间内截断大部分字符。

所以上面的所有答案都满足了只出现一行然后出现省略号的要求。但是,如果您希望省略号出现在某些文本行之后,那么您应该使用以下内容:

android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"

With this the ellipsis will appear only after 2 lines. Note: Its important to have singleLine as false.

这对我有所帮助:

android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"

确保 TextView width设置为 Match_Parent

Https://github.com/chrisjenx/calligraphy/issues/43#issuecomment-523701518

不推荐使用 android:singleLine。在我的例子中,我必须为 TextView获得一个固定的高度,并且我使用了 android:lines属性而不是 android:maxLines。我以为这能帮助和我有同样问题的人。

android:ellipsize="end"
android:lines="2"