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

She*_*lam 95 java android textview android-linearlayout

我有以下布局不起作用:

<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>
Run Code Online (Sandbox Code Playgroud)

Bon*_*ver 270

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

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

.............. scrollHorizo​​ntally是使它起作用的"特殊酱".

  • 奇怪......我试过`android:scrollHorizo​​ntally ="true"`但它不起作用,我不得不使用弃用的属性`android:singleLine ="true"`. (12认同)
  • 亲爱的,非常感谢老兄,你刚从很多自定义黑客中救了我来实现这个:) (3认同)
  • 水平滚动?显然我不想要水平滚动效果。 (2认同)
  • 无需scrollHorizo​​ntally 属性即可工作。 (2认同)

Atu*_*waj 31

这也将与ellipsise形成一条线

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

  • 这显然已被弃用 (14认同)
  • 它没有被弃用 (4认同)

Moh*_*him 20

用这个

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

如果没有充分了解输出是什么,请不要使用它

android:ellipsize="end"  
android:maxLines="1"
Run Code Online (Sandbox Code Playgroud)

当你使用maxlines = 1它时会有一段时间截断大部分字符.


Mar*_*lia 12

它在多个设备/ 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);
    }
Run Code Online (Sandbox Code Playgroud)

  • 这是最有用的答案...适用于每个API,可以轻松地将其转换为Utils库. (2认同)