android - texto - Establecer Elipsis en TextView reduce las líneas mostradas por uno(en lugar de solo elipsis)
texto largo android studio (6)
cuando uso TextView
con singleLine="true"
y ellipsize="end"
(mi Top TextView), funciona bien
pero en otro TextView
tiene más de 1 línea (en mi caso, 3 líneas en mi TextView
inferior), lines="3" and maxLines="3" and ellipsize="end",
no funciona correctamente.
Cuando NO pongo ellipsize="end"
en tvDesc, muestra 3 líneas, lo cual está bien. Aquí está el código: 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>
El código anterior muestra TextView tvDesc con 3 líneas y sin elipsis. Aquí está la Imagen:
Pero, quiero elipsize, entonces uso el siguiente código : 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>
Que muestra TextView tvDesc con solo 2 líneas y Ellipsize ,
que no está correctamente desmezclado UI, como Followin:
Quiero 3 líneas en TextView tvDesc con ellipsize
ALGUIEN PUEDE AYUDARME.?
Esta es, de lejos, la solución más simple que he encontrado y que estoy utilizando actualmente en la implementación. ¡Avíseme si necesita alguna otra ayuda!
Ah, y recuerde eliminar la etiqueta android:ellipsize
en su XML ya que usará el código inferior para elipsar automáticamente al final de 3 líneas.
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);
}
}
});
Intentalo
tv.setSingleLine(false);
tv.setEllipsize(TextUtils.TruncateAt.END);
int n = 3; // the exact number of lines you want to display
tv.setLines(n);
refiérase a Programmatically create TextView con puntos suspensivos
Lo probé con maxLines y ellipsize en Android 7 y 8.
android:maxLines="3"
android:ellipsize="end"
La vista previa muestra 2 líneas y en la tercera línea "...".
Pero esto parece ser un error en la vista previa.
En el dispositivo, funciona bien, 3 líneas con texto, al final de la tercera línea "..."
Simplemente configure android:maxLines
y android:ellipsize
.
<TextView
android:id="@+id/tv_dua"
android:ellipsize="end"
android:maxLines="3"
android:text="long text"
android:textAppearance="?android:attr/textAppearanceMedium" />
Simplemente use ellipsize combinado con scrollHorizontally="true"
. Simple y limpio.
Funcionó perfectamente para mí.
Utilice lo siguiente para obtener una vista de texto de líneas múltiples con puntos suspensivos en la última línea:
android:maxLines="4"
android:ellipsize="end"
android:singleLine="false"
Reemplace 4 con la cantidad de líneas que desee. Espero eso ayude !