Как показать эллипсы в моем TextView, если он больше, чем 1 строка?

У меня есть следующий макет, который не работает:

<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>

Ответ 1

Это обычная проблема. Попробуйте использовать следующее:

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

.............. scrollHorizontally - это "специальный соус", который заставляет его работать.

Ответ 2

Это также сделает одну строку с эллипсисом

 android:singleLine="true"

Ответ 3

Использовать этот

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

Не используйте это, не зная полностью, что приходит на выход

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

Когда вы используете maxlines = 1 это будет когда-то урезать большинство символов.

Ответ 4

Способ, которым он работал у меня на нескольких устройствах /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);
    }

Ответ 5

Таким образом, все ответы, приведенные выше, удовлетворяют требованию, чтобы отображалась только 1 строка и затем многоточие. Однако если вы хотите, чтобы многоточие появлялось после определенных строк текста, вам следует использовать следующее:

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

При этом многоточие появится только через 2 строки. Примечание. Важно, чтобы singleLine имел значение false.