在TextView上设置椭圆大小可以减less显示的行数(而不是最后一个)

当我用singleLine="true"ellipsize="end" (我的顶级TextView)使用TextView时, 它运行良好

但在另一个有更多的1行(在我的情况下在我的底部TextView 3行), lines="3" and maxLines="3" and ellipsize="end", 不能正常工作。

当我ellipsize="end"放置ellipsize="end"时,它显示3行,这是OK的。 这里是代码:XML:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imgv" android:layout_width="65dp" android:layout_height="80dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/img1" android:scaleType="fitXY" /> <TextView android:id="@+id/tvTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/imgv" android:background="@android:color/white" android:textColor="@android:color/black" android:text="Title testing line number and ellipsize at end" android:maxLines="1" android:singleLine="true" android:ellipsize="end" <--- WORKS WELL android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/tvDesc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/tvTitle" android:layout_toRightOf="@+id/imgv" android:layout_alignBottom="@+id/imgv" android:layout_alignParentRight="true" android:textSize="14dp" android:lines="3" android:maxLines="3" <---------- WITHOUT ellipsize android:text="I wanna this textview of having 3 lines and ellipsize at END and at this time I am Testing for it. This TextView shows 3 lines WITHOUT ellipsize property, but shows only 2 Lines when ELLIPSIZE property is setted" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> 

上面的代码显示了带有3行和无椭圆的TextView tvDesc。 这里是图片:

在这里输入图像说明

但是,我想ellipsize,所以我使用以下代码 :XML:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imgv" android:layout_width="65dp" android:layout_height="80dp" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:src="@drawable/img1" android:scaleType="fitXY" /> <TextView android:id="@+id/tvTitle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/imgv" android:background="@android:color/white" android:textColor="@android:color/black" android:text="Title testing line number and ellipsize at end" android:maxLines="1" android:singleLine="true" android:ellipsize="end" android:textAppearance="?android:attr/textAppearanceMedium" /> <TextView android:id="@+id/tvDesc" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/tvTitle" android:layout_toRightOf="@+id/imgv" android:layout_alignBottom="@+id/imgv" android:layout_alignParentRight="true" android:textSize="14dp" android:lines="3" android:maxLines="3" android:ellipsize="end" <------ WITH ELLIPSIZE android:text="I wanna this textview of having 3 lines and ellipsize at END and at this time I am Testing for it. This TextView shows 3 lines WITHOUT ellipsize property, but shows only 2 Lines when ELLIPSIZE property is setted" android:textAppearance="?android:attr/textAppearanceMedium" /> </RelativeLayout> 

其中显示TextView tvDesc只有2行和Ellipsize

这是不正确的UI,作为Followin: 在这里输入图像说明

我想在TextView tvDesc中用ellipsize 3行

谁能帮我。?

这是迄今为止我发现和目前在部署中使用的最简单的解决scheme。 让我知道如果您需要任何其他帮助!

呵呵,记得在你的XML中删除android:ellipsize标签,因为你将使用底部代码在3行的末尾自动省略椭圆。

 TextView snippet; snippet.setText("loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor ") ViewTreeObserver vto = this.snippet.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() { @Override public void onGlobalLayout() { ViewTreeObserver obs = snippet.getViewTreeObserver(); obs.removeGlobalOnLayoutListener(this); if (snippet.getLineCount() > 3) { int lineEndIndex = snippet.getLayout().getLineEnd(2); String text = snippet.getText().subSequence(0, lineEndIndex - 3) + "..."; snippet.setText(text); } } }); 

只需设置android:maxLinesandroid:ellipsize

 <TextView android:id="@+id/tv_dua" android:ellipsize="end" android:maxLines="3" android:text="long text" android:textAppearance="?android:attr/textAppearanceMedium" /> 

使用以下命令在最后一行获得带省略号的多行文本视图:

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

用你想要的行数replace4。 希望能帮助到你 !

只需将ellipsizescrollHorizo​​ntally scrollHorizontally="true"结合使用即可 。 简单而干净。

它对我来说是完美的。

尝试一下

 tv.setSingleLine(false); tv.setEllipsize(TextUtils.TruncateAt.END); int n = 3; // the exact number of lines you want to display tv.setLines(n); 

参考以编程方式创build带有省略号的TextView