Ellipsize不适用于自定义listView中的textView

asp*_*ame 28 xml android textview

我有一个listView,其中包含由下面的xml-layout定义的自定义对象.我希望带有id"info"的textView在一行上进行椭圆化,我尝试使用这些属性

android:singleLine="true"
android:ellipsize="end"
Run Code Online (Sandbox Code Playgroud)

没有成功.

如果我将layout_width设置为固定宽度,例如

android:layout_width="100px"
Run Code Online (Sandbox Code Playgroud)

文本被截断了.但出于便携性原因,这不是一个可接受的解决方案.

你能发现问题吗?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="5px"
>
<TextView  
android:id="@+id/destination"
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:textSize="22dp"
android:paddingLeft="5px"
/>

<TextView  
android:id="@+id/date"
android:layout_width="fill_parent" 
android:layout_height="wrap_content"
android:textSize="15dp"
android:paddingLeft="5px"
/>

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/info_table"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="5px"
android:paddingTop="10px" 
>
    <TableRow>
        <TextView
            android:id="@+id/driver_label"
            android:gravity="right"
            android:paddingRight="5px"
            android:text="@string/driver_label" />
        <TextView
            android:id="@+id/driver" />
    </TableRow>
    <TableRow>
        <TextView
            android:id="@+id/passenger_label"
            android:gravity="right"
            android:paddingRight="5px"
            android:text="@string/passenger_label" />
        <TextView
            android:id="@+id/passengers" />
    </TableRow>
    <TableRow>
        <TextView
            android:id="@+id/info_label"
            android:gravity="right"
            android:paddingRight="5px" 
            android:text="@string/info_label"/>
        <TextView
            android:id="@+id/info"
            android:layout_width="fill_parent"
            android:singleLine="true"
            android:ellipsize="end" />
    </TableRow>
</TableLayout> 
Run Code Online (Sandbox Code Playgroud)

tbr*_*lle 40

如果不使用已弃用的属性,以下行对我来说非常有用

android:ellipsize="end" 
android:lines="1"
android:scrollHorizontally="true"
Run Code Online (Sandbox Code Playgroud)

参考http://code.google.com/p/android/issues/detail?id=882#c9

  • 它不适用于Android 4.0.使用上面的代码:`android:ellipsize ="end"android:SingleLine ="true"android:scrollHorizo​​ntally ="true"` (6认同)

Jer*_*gan 24

Ellipsize已被破坏(对错误报告进行投票,特别是因为他们声称它不可复制)所以你必须使用一个小的黑客.使用:

android:inputType="text"
android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)

在任何你想要椭圆形的东西上.此外,不要使用singleLine,它已被弃用.

更新:

仔细观察,你遇到的问题是你的桌子正在屏幕的右侧延伸.将您的TableLayout定义更改为:

<TableLayout
    android:id="@+id/info_table"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="5px"
    android:paddingTop="10px"
    android:shrinkColumns="1">
Run Code Online (Sandbox Code Playgroud)

应该解决这个问题,然后按照我上面所说的去做TextView.

  • 谢谢,但不幸的是它仍然无法正常工作.它可能与tableLayout有关吗? (2认同)

And*_*ane 7

我和史蒂夫有同样的结果:

android:ellipsize ="marquee"android:scrollHorizo​​ntally ="true"android:lines ="1"

工作得很好