TextView的ellipsize不适用于maxLines = 1

时间:2014-06-22 13:26:30

标签: android textview

我真的无法弄清楚为什么,但我只能在maxLines=2以及更多工作中使用ellipsize。我正在显示几个描述的单词,然后是一个没有空格的长字符串。

这就是TextView的样子:

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:textColor="#757575"
                android:text="@string/gcm_not_registered"
                android:maxLines="1"
                android:ellipsize="end"
                android:id="@+id/login_gcmRegistrationTextView"/>

然后以编程方式为其设置文本,但根据maxLines限制,我得到两个不同的结果:

maxLines=1 maxlines=2

唯一改变的是maxLines,为什么第一张照片中的线条也没有填充?

3 个答案:

答案 0 :(得分:6)

有两种方法可以解决它:

  1. 尝试将android:ellipsize="end"属性更改为android:ellipsize="marquee"
  2. 尝试删除android:maxLines="1" android:ellipsize="end"属性并添加android:singleLine="true"属性。

答案 1 :(得分:5)

此代码适用于我:

在xml中添加:

  • 属性ellipsizemarquee
  • 属性lines1

在java中:

<yourTextView>.setHorizontallyScrolling(true);
<yourTextView>.setSelected(true);

如果有另一个请求“焦点”的项目,则会失去选框效果。 textView需要选择状态来阻止这种情况。

答案 2 :(得分:0)

实际上,问题出在跨度文本上,如果您设置跨度文本将无法正常工作。除此之外,以下代码对我有用

<TextView
    android:id="@+id/tv_second"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="40dp"
    android:layout_margin="5dp"
    android:padding="5dp"
    android:fontFamily="sans-serif-condensed"
    android:textColor="#b3277b"
    android:background="#f7ecff"
    android:layout_below="@id/tv"
    android:text="This is first line\nThis is second line\nThis is third line"
    android:ellipsize="end"
    android:maxLines="2"
    />