Textview显示部分文本
我有一个TextView,我必须在其中加载消息。 TextView最多有2行(android:lines="2"
)。该消息可能包含'\ n'字符。Textview显示部分文本
我该如何在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行上,具体取决于消息长度。
在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>
这里是输出:
它没有帮助...如果我有消息:line1 \ nline2 \ nline3在line2之后我必须添加3个点,因为消息不适合 – 2011-02-01 07:52:56
您尝试使用此属性吗?它只是截断第二行后面的文本,并为你放置三个点,我从我的代码中剪切并粘贴它。 – Adinia 2011-02-01 07:56:47
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);
使用android:ellipsize="end"
,而不是“大帐篷”这为我做。
Gabi,
我也有同样的问题。要在一个TextView使ellipsize与2号线我用下面的参数:
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与此配置只适用于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);
为什么你需要知道文本的长度设置为不?它可能针对不同屏幕尺寸有所不同,除非你定义TextView的一个固定的宽度。 – Adinia 2011-02-01 07:38:22
我的问题是,我不知道如何在最后一个可见单词的末尾添加3个点。android:elli psize =“end”和android:ellipsize =“marquee”没有帮助....所以我认为我不会将所有文本添加到textview,但只有符合textview – 2011-02-01 07:55:39
的文本才能发布代码您现在使用的TextView?也许还有其他一些属性会阻止椭圆化工作。 – Adinia 2011-02-01 07:58:59