quand j’utilise TextView
avec singleLine="true"
et ellipsize="end"
(mon top TextView), ça marche bien
mais dans un autre TextView
ayant plus de 1 lignes (dans mon cas, 3 lignes dans mon TextView
inférieur), lines="3" and maxLines="3" and ellipsize="end",
ne fonctionnent pas correctement.
Lorsque je ne mets pas ellipsize="end"
dans tvDesc, il affiche 3 lignes, ce qui est OK. Voici le code: XML:
<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" <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"
Le code ci-dessus montre TextView tvDesc avec 3 lignes et No-Ellipsize. Voici l’image:
Mais, je veux ellipsiser, donc j’utilise le code suivant : XML:
<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"
Qui montre TextView tvDesc avec seulement 2 lignes et Ellipsize ,
qui n’est pas correctement désimprimée, comme Followin:
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 en déploiement. Faites-moi savoir si vous avez besoin de toute autre aide!
Oh, et n’oubliez pas de supprimer la balise android:ellipsize
dans votre XML puisque vous utiliserez le code du bas pour ellipsiser automatiquement à la fin de 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); Ssortingng text = snippet.getText().subSequence(0, lineEndIndex - 3) + "..."; snippet.setText(text); } } });
Il suffit de définir android:maxLines
et android:ellipsize
.
Utilisez ce qui suit pour obtenir une textview multiligne avec points de suspension sur la dernière ligne:
android:maxLines="4" android:ellipsize="end" android:singleLine="false"
Remplacez 4 par le nombre de lignes souhaité. J’espère que cela aide !
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 bogue dans le visualiseur.
Sur l’appareil, cela fonctionne très bien, 3 lignes avec du texte, à la fin de la troisième ligne “…”
Utilisez simplement ellipsize combiné avec scrollHorizontally="true"
. Simple et propre
Cela a parfaitement fonctionné pour moi.
L’essayer
tv.setSingleLine(false); tv.setEllipsize(TextUtils.TruncateAt.END); int n = 3; // the exact number of lines you want to display tv.setLines(n);
référez-vous à ProgramView TextView avec points de suspension