Définir Ellipsize sur TextView réduit les lignes affichées par un (au lieu de la dernière ellipsisation)

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:

entrer la description de l'image ici

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: entrer la description de l'image ici

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