TextView Ellipsize(...)不起作用

时间:2012-06-29 12:36:39

标签: android android-layout android-linearlayout textview

当文字长于TextView时,我希望有一个单行TextView在最后显示3个点。我不知道为什么 - 但我不明白。

我已经解决了类似的StackOverflow问题,但我最终没有解决方案。也许某人有一些有用的提示。

<LinearLayout 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"
    android:orientation="vertical">

    <TextView 
        android:textStyle="bold" 
        android:text="Full Name" 
        android:layout_height="wrap_content" 
        android:textSize="16sp"
        android:layout_width="wrap_content" 
        android:id="@+id/lName"
        android:layout_gravity="center_vertical" 
        android:maxLines="1"
        android:ellipsize="end"/>
</LinearLayout>

上面的LinearLayout嵌套在另外两个LinearLayouts中。也许这一点很重要。我已经尝试了属性“singleLine”,但有人说这已被弃用,无论如何都不起作用。

7 个答案:

答案 0 :(得分:46)

在样式文件中添加以下样式(通常为styles.xml):

<style name="autoscroll">
    <item name="android:singleLine">true</item>
    <item name="android:ellipsize">marquee</item>
    <item name="android:marqueeRepeatLimit">marquee_forever</item>
    <item name="android:focusable">true</item>
    <item name="android:focusableInTouchMode">true</item>
    <item name="android:scrollHorizontally">true</item>
</style>

然后将样式@style/autoscroll添加到TextView

<TextView android:id="@+id/lName"
      style="@style/autoscroll" />

您可以在需要时轻松重复使用自动滚动功能。

答案 1 :(得分:17)

在xml中为TextView添加它:

        android:maxWidth="200dp" 
        android:maxLines="1" 

作为

        android:singleLine="true"  

已弃用。

答案 2 :(得分:9)

android:id="@+id/lName" android:layout_width="150dp"
    android:layout_height="wrap_content"
    android:ellipsize="end"
    android:singleLine="true"
    android:text="Avinljhakjhsajkhakjshda"
    android:textSize="16sp"

答案 3 :(得分:1)

适用于singleLine="true",但现已弃用此属性,请改用 ellipsize scrollHorizontally="true"

答案 4 :(得分:1)

当我选择文字时,省略号没有出现。 我需要禁用可选文本(默认设置):

android:layout_width="0dp" (match constraint)
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:textIsSelectable="false"

答案 5 :(得分:0)

除非添加'android:ems'属性,否则这对我不起作用

        android:ellipsize="end"
        android:singleLine="true"
        android:ems="8"

答案 6 :(得分:0)

使用此代码肯定会奏效。

<TextView
    android:id="@+id/sAddress"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:maxLines="1"
    android:ellipsize="end"
    android:text="Adress"
    android:textSize="14sp"/>