Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 文本视图显示部分文本_Android_Android Layout_Textview_Word Wrap - Fatal编程技术网

Android 文本视图显示部分文本

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

我有一个文本视图,我必须在其中加载消息。文本视图最多有2行(
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);