quand j'utilise TextView
avec singleLine="true"
et ellipsize="end"
(mon top TextView), cela fonctionne bien
mais dans un autre TextView
ayant plus de 1 lignes (dans mon cas, 3 lignes dans mon TextView
), lines="3" and maxLines="3" and ellipsize="end",
ne fonctionne pas correctement.
Quand je ne mets pas ellipsize="end"
dans tvDesc, il affiche 3 lignes, ce qui est OK . Voici le 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>
Le code ci-dessus montre TextView tvDesc avec 3 lignes et aucune ellipsize. Voici une image:
Mais, je veux ellipsize, j'utilise donc le code suivant : 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>
Qui montre TextView tvDesc avec seulement 2 lignes et Ellipsize ,
qui n’est pas correctement dézirée, comme suit:
Je veux 3 lignes dans TextView tvDesc avec ellipsize
QUELQU'UN PEUT-IL M'AIDER.?
C’est de loin la solution la plus simple que j’ai trouvée et que j’utilise actuellement dans le déploiement. Faites-moi savoir si vous avez besoin d'une autre assistance!
Oh, et n'oubliez pas de supprimer la balise Android:ellipsize
dans votre XML car vous utiliserez le code du bas pour ellipser automatiquement à la fin des 3 lignes.
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);
}
}
});
Il suffit de définir Android:maxLines
et Android:ellipsize
.
<TextView
Android:id="@+id/tv_dua"
Android:ellipsize="end"
Android:maxLines="3"
Android:text="long text"
Android:textAppearance="?android:attr/textAppearanceMedium" />
Utilisez ce qui suit pour obtenir une vue texte multiligne avec Ellipsis sur la dernière ligne:
Android:maxLines="4"
Android:ellipsize="end"
Android:singleLine="false"
Remplacez 4 par le nombre de lignes que vous souhaitez . J'espère que cela aidera!
Je l'ai essayé avec maxLines et Ellipsize sur Android 7 et 8.
Android:maxLines="3"
Android:ellipsize="end"
L'aperçu montre 2 lignes et sur la troisième ligne "...".
Mais cela semble être un bug dans l'aperçu.
Sur l'appareil, cela fonctionne parfaitement, 3 lignes de texte, à la fin de la troisième ligne "..."