文字没有椭圆化

时间:2011-07-20 21:49:40

标签: android android-layout textview

我将TextView设置为ellipsize但是当我将文本放入其中时却没有这样做。有什么想法吗?

<TextView 
    android:id="@+id/LegalsView" 
    android:ellipsize="end"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium" />

13 个答案:

答案 0 :(得分:63)

尝试:

android:singleLine="true"

答案 1 :(得分:17)

android:layout_width="wrap_content"

允许TextView扩展,只要它需要(包括在屏幕上运行)。为了使它成为椭圆形,你将不得不设置宽度为建议的公民conn,最好是android:layout_width="fill_parent"而不是绝对值。

其他提示:您还需要设置TextView的maxLines(可能为1),并且要显示实际的省略号(“...”),您可能还会有设置

android:scrollHorizontally="true"

答案 2 :(得分:10)

你需要匹配android的设置才能正确计算出对象的位置。有几种可能的组合,并且取决于布局的其余部分是在同一条线上。

这是一个有效的组合:

android:layout_width="0dip" // dynamic width
android:layout_weight="1"   // less weight, other objects still "0"
android:ellipsize="end"     // ... into end of text (right)
android:singleLine="true"   // one line, deprecated, but necessary for some ambients
android:maxLines="1"        // one line, new mode

总之,如果使用动态布局,或者只是固定大小,则表示重量,然后表示只有一行并配置“...”的显示方式。

答案 3 :(得分:5)

我能够完成这项工作的唯一方法是设置width="1dp"weight="1"ellipsize="end"maxLines="1"scrollHorizontally="true"。前两个具有与width="match_parent"相同的效果,而窗口小部件不会从显示器的边缘扩展,其余三个设置都必须使文本变为椭圆形。

答案 4 :(得分:5)

我的应用程序开始忽略maxlines&amp;我加上

时的ellipsize
android:textIsSelectable="true"

似乎这些选项不兼容。

答案 5 :(得分:3)

如果你想让多行省略号工作,不幸的是它不能很好地工作。这是Android平台中的一个已知错误,据我所知它还没有修复 在TextView中,您可以得到的最好的是2行椭圆化(可以通过设置

来实现)
android:maxLines="2"

请参阅this链接 即使有另一个答案中提到的绝对宽度,它仍然只给你最多2行省略号。 (但如前所述,单线省略号是可以实现的)。因此,例如,您的文本可能会填充您的8行TextView,但在您打开省略号时将显示如下:

+---------------------------------------------------+
|                                                   |
| This is my cool text that is supposed to fill the |
| entire textview but unfortunately because of t... |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
|                                                   |
+---------------------------------------------------+

如果您知道TextView的大小,则可以使用可用的自定义组件here(不幸的是,最初托管它的Google代码项目似乎已经消失,因此我可以找到此链接。)< / p>

答案 6 :(得分:2)

如果您没有为TextView定义特定宽度,则当文本到达父视图的宽度时,文本将首先进行椭圆化。

答案 7 :(得分:2)

此解决方案有效:

android:ellipsize="end"
android:singleLine="false"
android:lines="3"
android:maxLines="3"

宽度也可以设置为“wrap_content”

答案 8 :(得分:0)

您将layout_width更改为某个dp而不是wrap_content

使用
机器人:SINGLELINE =&#34;真&#34;

机器人:ellipsize =&#34;端&#34;

代码:

import

答案 9 :(得分:0)

只运行运行时,执行以下操作:

textView.setEllipsize(TruncateAt.END);
textView.setLines(1);
textView.setHorizontallyScrolling(true);
textView.setText("Long text goes here");

答案 10 :(得分:0)

您也可以像这样设置maxLines:

        <TextView
            android:id="@+id/txt_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:maxLines="3"
            android:ellipsize="end"
            android:textStyle="bold"/>

当文本超出maxLines设置时,会出现省略号。

答案 11 :(得分:0)

android:maxWidth="150dp"是为我省略文字的唯一实例。

答案 12 :(得分:-1)

我认为您需要指定一个绝对宽度才能正常工作。

android:layout_width="100dip"

android:layout_width="fill_parent"