如果它大于1行,如何在TextView上显示省略号?

时间:2011-06-18 02:37:20

标签: java android android-linearlayout textview

我有以下布局不起作用:

<LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:id="@+id/experienceLayout" 
    android:background="#ffffff" 
    android:layout_height="match_parent" 
    android:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    android:paddingBottom="6dp" 
    android:paddingTop="6dp">

    <TextView 
        android:layout_weight="1" 
        android:id="@+id/experienceLabel" 
        android:text="Experience" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:textStyle="bold">
    </TextView>

    <TextView 
        android:id="@+id/experienceTextView" 
        android:text="TextView" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:ellipsize="end" 
        android:lines="1" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:fadeScrollbars="false">
    </TextView>

</LinearLayout>

7 个答案:

答案 0 :(得分:258)

这是一个常见问题。请尝试使用以下内容:

android:scrollHorizontally="true"
android:ellipsize="end" 
android:maxLines="1"

.............. scrollHorizo​​ntally正是“特殊酱”,使其发挥作用。

答案 1 :(得分:28)

这也将使用ellipsise

创建一行
 android:singleLine="true"

答案 2 :(得分:16)

使用此

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

请勿在未完全了解输出内容的情况下使用此功能

android:ellipsize="end"  
android:maxLines="1"

使用maxlines = 1时,有时会截断大部分字符。

答案 3 :(得分:11)

它在多个设备/ API上的工作方式在程序上是这样的(其中tv是你的TextView):

    if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }

答案 4 :(得分:1)

因此,以上所有答案都满足了只出现1行然后出现省略号的要求。但是,如果希望省略号出现在某些文本行之后,则应使用以下命令:

android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"

这样,省略号将仅出现在2行之后。注意:将singleLine设置为false很重要。

答案 5 :(得分:1)

这帮助了我

android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"

确保将TextView width设置为Match_Parent

https://github.com/chrisjenx/Calligraphy/issues/43#issuecomment-523701518

答案 6 :(得分:-1)

android:singleLine已过时。就我而言,我必须为TextView设置一个固定的高度,并使用android:lines属性而不是android:maxLines。我认为这可以帮助遇到与我相同的问题的人。

android:ellipsize="end"
android:lines="2"