web-dev-qa-db-de.com

Durch die Einstellung der Ellipsize-Größe in TextView werden die angezeigten Zeilen um eins reduziert (anstelle der letzten Ellipse).

wenn ich TextView mit singleLine="true" und ellipsize="end" (meine oberste Textansicht) verwende, funktioniert es funktioniert gut

aber in einem anderenTextView mit mehr als 1 Zeilen (in meinem Fall 3 Zeilen in meinem unteren TextView), lines="3" and maxLines="3" and ellipsize="end",funktioniert nicht richtig.

Wenn ich ellipsize="end" nicht in tvDesc stelle, werden 3 Zeilen angezeigt, was OK ist .. _ Hier ist der Code: 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>

Der obige Code zeigt TextView tvDesc mit 3 Zeilen und ohne Ellipsize. Hier ist das Bild:

enter image description here

Aber ich möchte ellipsize, deshalb verwende ich folgenden Code}: 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>

Die TextView tvDesc mit nur 2 Zeilen und Ellipsize zeigt,

die nicht ordnungsgemäß dezimierte UI als Followin: enter image description here

Ich möchte 3 Zeilen in TextView tvDesc mit Ellipsize}

KANN MIR JEMAND HELFEN.?

40

Dies ist bei weitem die einfachste Lösung, die ich bei der Bereitstellung gefunden habe und derzeit verwende. Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen!

Ach, und vergessen Sie nicht, das Android:ellipsize-Tag in Ihrem XML zu entfernen, da Sie den unteren Code verwenden, um am Ende von 3 Zeilen automatisch eine Ellipse zu erstellen.

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);
        }
    }
});
45
Vishwa Patel

Setzen Sie einfach Android:maxLines und Android:ellipsize.

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

Verwenden Sie das Folgende, um eine mehrzeilige Textansicht mit Ellipsis in der letzten Zeile zu erhalten:

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

Ersetzen Sie 4 durch die Anzahl der gewünschten Zeilen . Hoffe, es hilft!

2
Shivam Bhalla

Ich habe es mit MaxLines und Ellipsize auf Android 7 & 8 ausprobiert.

Android:maxLines="3"
Android:ellipsize="end"

Die Vorschau zeigt 2 Zeilen und in der dritten Zeile "...".

Dies scheint jedoch ein Fehler in der Vorschau zu sein.

Auf dem Gerät funktioniert es einfach gut, 3 Zeilen mit Text, am Ende der dritten Zeile "..."

0
McOzD