Textview显示部分文本

我有一个TextView,我必须加载一条消息。 TextView最多有2行( android:lines="2" )。 该消息可能包含一个'\ n'字符。

我应该如何加载该TextView中的消息,以便文字将被包裹,如果在这两行消息不适合,在最后一个可见的单词结尾,我必须添加三个点(…)? 我如何检测适合TextView的文本的长度?

我的TextView的代码是

 <TextView a:id="@+id/tv_message" a:gravity="top" a:layout_width="wrap_content" a:layout_height="wrap_content" a:layout_alignParentTop="true" a:layout_toRightOf="@id/iv_icon" a:layout_marginLeft="2dp" a:layout_marginTop="4dp" a:paddingRight="7dp" a:paddingBottom="5dp" a:textSize="12sp" a:typeface="sans" a:ellipsize="marquee" a:lines="2" a:maxLines="2" a:textColor="@android:color/black" /> 

但是在应用程序中,即使有一行包含签名,文本也会出现在两行上。 消息如下:“消息文本”+“\ n签名”,但消息可以在1,2,3行上,具体取决于消息长度。

Solutions Collecting From Web of "Textview显示部分文本"

在XML中,使用TextView属性android:ellipsize="marquee"

你的TextView可以像这样定义:

 <TextView android:id="@+id/text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:maxLines="2" android:lines="2" android:ellipsize="marquee"/> 

编辑 :我已经尝试了下面的代码,从你的改编:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rlt_news" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/cell_background" android:padding="5dip" > <TextView android:id="@+id/tv_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:paddingLeft="5dip" android:text="Name" android:textStyle="bold" /> <ImageView android:id="@+id/rss_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/tv_title" android:layout_marginLeft="2dip" android:adjustViewBounds="true" android:maxHeight="100dip" android:maxWidth="100dip" android:src="@drawable/rss_cell_icon" android:visibility="visible" /> <TextView android:id="@+id/tv_description" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginLeft="2dp" android:layout_marginTop="4dp" android:layout_toRightOf="@id/rss_icon" android:ellipsize="marquee" android:gravity="top" android:lines="2" android:maxLines="2" android:paddingBottom="5dp" android:paddingRight="7dp" android:text="Description of the news, just the short paragraph, \nSignature, to see how it works if there are more than two lines" android:textColor="@android:color/black" android:textSize="12sp" android:typeface="sans" /> </RelativeLayout> 

这里是输出:
在这里输入图像说明

使用android:ellipsize="end"而不是“marquee”。

加比,

我也有同样的问题。 要在两行的textview上启用椭圆大小,我使用以下参数:

 android:maxLines="2" // You already got this one android:ellipsize="end" // also this one android:singleLine="false" // This is the command that solves your problem. 

不幸的是我得到了一个新的应用程序的情况。 我必须使用3行ellipsize,这种configuration只适用于2行… :(祝你好运

如果您从代码中设置文本,则必须再次设置选项!

 textView.setText(content); textView.setEllipsize(TruncateAt.END); textView.setLines(5); textView.setMaxLines(5); 

它适用于我,而不是在XML布局代码中设置它

 holder.txtDescription.setText(text); holder.txtDescription.setMaxLines(3); holder.txtDescription.setEllipsize(TruncateAt.END); 
  String s = "line1 \nline2 \nline3"; String [] lines = s.split("\n"); String twolines; if (lines.length > 2) { twolines = lines[0] + "\n" + lines[1] + "..."; } else { twolines = s; } 

这应该给你想要的结果,只是使用

 ((TextView)findViewById(R.id.text)).setText(twolines);