Подтвердить что ты не робот

Установка Ellipsize в TextView уменьшает линии, показанные одним (вместо того, чтобы только эллипсизация последней)

когда я использую TextView с singleLine="true" и ellipsize="end" (мой верхний TextView), он хорошо работает

, но в другом TextView, имеющем более 1 строки (в моем случае 3 строки в нижней части TextView), lines="3" and maxLines="3" and ellipsize="end", работает неправильно.

Когда я НЕ помещаю ellipsize="end" в tvDesc, он показывает 3 строки, что в порядке. Вот код: XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imgv"
        android:layout_width="65dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/img1"
        android:scaleType="fitXY" />

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imgv"
        android:background="@android:color/white"
        android:textColor="@android:color/black"
        android:text="Title testing line number and ellipsize at end"
        android:maxLines="1"
        android:singleLine="true"
        android:ellipsize="end"    <---  WORKS WELL
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/tvDesc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvTitle"
        android:layout_toRightOf="@+id/imgv"
        android:layout_alignBottom="@+id/imgv"
        android:layout_alignParentRight="true"
        android:textSize="14dp"
        android:lines="3"
        android:maxLines="3"
                       <----------  WITHOUT ellipsize

        android:text="I wanna this textview of having 3 lines and ellipsize at END and at this time I am Testing for it. This TextView shows 3 lines WITHOUT ellipsize property, but shows only 2 Lines when ELLIPSIZE property is setted"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

Выше кода показывает TextView tvDesc с 3 строками и без эллипса. Вот изображение:

enter image description here

Но я хочу эллипсизировать, поэтому я использую следующий код: XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ImageView
        android:id="@+id/imgv"
        android:layout_width="65dp"
        android:layout_height="80dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/img1"
        android:scaleType="fitXY" />

    <TextView
        android:id="@+id/tvTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_toRightOf="@+id/imgv"
        android:background="@android:color/white"
        android:textColor="@android:color/black"
        android:text="Title testing line number and ellipsize at end"
        android:maxLines="1"
        android:singleLine="true"
        android:ellipsize="end"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/tvDesc"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tvTitle"
        android:layout_toRightOf="@+id/imgv"
        android:layout_alignBottom="@+id/imgv"
        android:layout_alignParentRight="true"
        android:textSize="14dp"
        android:lines="3"
        android:maxLines="3"
        android:ellipsize="end"    <------  WITH  ELLIPSIZE

        android:text="I wanna this textview of having 3 lines and ellipsize at END and at this time I am Testing for it. This TextView shows 3 lines WITHOUT ellipsize property, but shows only 2 Lines when ELLIPSIZE property is setted"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

Показывает TextView tvDesc всего 2 строки и Ellipsize,

который не является соответствующим образом дезактивированным пользовательским интерфейсом, так как Followin: enter image description here

Я хочу 3 строки в TextView tvDesc с эллипсисом

МОЖЕТ ЛИ ПОМОЧЬ МЕНЯ.?

4b9b3361

Ответ 1

Это, безусловно, самое простое решение, которое я нашел и использую в настоящее время при развертывании. Дайте мне знать, если вам нужна какая-либо помощь!

О, и не забудьте удалить тег android:ellipsize в вашем XML, так как вы будете использовать нижний код для автоматического эллипсирования в конце 3 строк.

TextView snippet;
snippet.setText("loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor ")
ViewTreeObserver vto = this.snippet.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
        ViewTreeObserver obs = snippet.getViewTreeObserver();
        obs.removeGlobalOnLayoutListener(this);
        if (snippet.getLineCount() > 3) {
            int lineEndIndex = snippet.getLayout().getLineEnd(2);
            String text = snippet.getText().subSequence(0, lineEndIndex - 3) + "...";
            snippet.setText(text);
        }
    }
});

Ответ 2

Просто установите android:maxLines и android:ellipsize.

<TextView
        android:id="@+id/tv_dua"
        android:ellipsize="end"
        android:maxLines="3"
        android:text="long text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

Ответ 3

Используйте следующую команду, чтобы получить многострочный текст с эллипсисом в последней строке:

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

Замените 4 количеством нужных строк. Надеюсь, это поможет!

Ответ 4

Я пробовал его с maxLines и эллипсисом на Android 7 и 8.

android:maxLines="3"
android:ellipsize="end"

Предварительный просмотр показывает 2 строки и в третьей строке "...".

Но это кажется ошибкой в ​​предварительном просмотре.

На устройстве он работает нормально, 3 строки с текстом, в конце третьей строки "..."

Ответ 5

Просто используйте эллипсис в сочетании с scrollHorizontally="true". Простой и чистый.

Он отлично работал у меня.