Android 文本视图显示部分文本
我有一个文本视图,我必须在其中加载消息。文本视图最多有2行(Android 文本视图显示部分文本,android,android-layout,textview,word-wrap,Android,Android Layout,Textview,Word Wrap,我有一个文本视图,我必须在其中加载消息。文本视图最多有2行(android:lines=“2”)。消息可能包含“\n”字符 我应该如何在文本视图中加载消息,以便将单词包装起来,如果在这两行中消息不合适,我必须在最后一个可见单词的末尾添加三个点(…)?如何检测适合该文本视图的文本长度 我的文本视图代码是 <TextView a:id="@+id/tv_message" a:gravity="top" a:layout_w
android:lines=“2”
)。消息可能包含“\n”字符
我应该如何在文本视图中加载消息,以便将单词包装起来,如果在这两行中消息不合适,我必须在最后一个可见单词的末尾添加三个点(…)?如何检测适合该文本视图的文本长度
我的文本视图代码是
<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中,对文本视图使用属性
android:ellipsize=“marquee”
您的文本视图可以定义为:
<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>
下面是输出:这应该会给你想要的结果,只要使用
((TextView)findViewById(R.id.text)).setText(twolines);
用android:ellipsize=“end”代替为我做的“marquee”。Gabi 我也有同样的问题。要在包含2行的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,此配置仅适用于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定义了固定的宽度。我的问题是我不知道如何在最后一个可见单词的末尾添加3个点。android:ellipsize=“end”和android:ellipsize=“marquee”没有帮助…所以我认为我没有将所有文本添加到textview,但只有符合textview的文本才能发布您现在使用的textview的代码?可能还有其他属性阻止省略号的工作。这没有帮助…如果我在第2行之后有消息:line1\nline2\nline3,我必须添加3个点,因为消息不合适,但消息的第一行可能足够长,可以容纳三行文本视图,因此这没有帮助它没有帮助…如果我有消息:第1行\nline2\nline3在第2行之后,我必须添加3个点,因为消息不合适。您是否尝试使用此属性?它只是截断第二行之后的文本,并将三个点放在第二行之后你,我从我的代码中剪切并粘贴它。我用你的代码替换了我的代码,它工作了,我发布了一张带有结果的图片…我不知道那里发生了什么,也许你也在设置代码中的一些属性?或者只是我不明白你想要什么..你也尝试过@slup提供的新解决方案吗?是的,我正在设置来自代码的文本…这可能是个问题吗?不,我也在设置来自代码的文本;在这里,我只是把它放在XML中,让您看看我使用了什么文本,但我与来自代码的文本具有相同的效果。但我想,除了文本之外,您正在通过代码设置的其他属性可能会产生干扰。@Gasper它对我有效。我申请1好的,谢谢你。
holder.txtDescription.setText(text);
holder.txtDescription.setMaxLines(3);
holder.txtDescription.setEllipsize(TruncateAt.END);