J'ai besoin d'ellipsiser une vue de texte multiligne. Mon composant est suffisamment grand pour afficher au moins 4 lignes avec l'ellipse, mais seules 2 lignes sont affichées. J'ai essayé de changer le nombre minimum et maximum de lignes du composant mais cela ne change rien.
163
Réponses:
Voici une solution au problème. C'est une sous-classe de TextView qui fonctionne réellement pour l'ellipse. Le code android-textview-multiline-ellipse répertorié dans une réponse précédente que j'ai trouvé bogué dans certaines circonstances, ainsi que sous GPL, ce qui ne fonctionne pas vraiment pour la plupart d'entre nous. N'hésitez pas à utiliser ce code librement et sans attribution, ou sous licence Apache si vous préférez. Notez qu'il y a un auditeur pour vous avertir lorsque le texte est ellipsé, ce que j'ai trouvé très utile moi-même.
la source
Dans mon application, j'ai eu un problème similaire: 2 lignes de chaîne et, éventuellement, ajouter "..." si la chaîne était trop longue. J'ai utilisé ce code dans un fichier xml dans la balise textview:
la source
setText(..., TextView.BufferType.SPANNABLE);
.J'ai aussi rencontré ce problème. Il y a un bug assez ancien à ce sujet qui reste sans réponse: Bug 2254
la source
Essayez ceci, cela fonctionne pour moi, j'ai 4 lignes et cela ajoute le "..." à la fin de la dernière / quatrième ligne. C'est la même chose que la réponse du moral mais j'ai singeLine = "false" dedans.
la source
J'ai ce problème et, finalement, je me construis une solution courte. Vous n'avez qu'à ellipser manuellement la ligne que vous voulez, votre attribut maxLine coupera votre texte.
Cet exemple coupe votre texte sur 3 lignes maximum
la source
J'ai combiné les solutions de Micah Hainline, Alex Băluț et Paul Imhoff pour créer une multiligne ellipsante
TextView
qui prend également en charge leSpanned
texte.Il vous suffit de définir
android:ellipsize
etandroid:maxLines
.Source complète: EllipsizingTextView.java
la source
Dans mon cas, il n'est pas nécessaire de coder cela en Java. Tout fonctionne comme prévu. Pas besoin de quelque chose comme
android:singleLine="false"
.Mais il semble y avoir un bogue dans l'aperçu de la mise en page d'Android Studio (v3.0):
Étant donné Android 7.1.1 sur mon appareil, cela fonctionne:
la source
Sur la base des solutions de Micah Hainline et du commentaire d'alebs, je suis venu avec l'approche suivante qui fonctionne avec des textes étendus, de sorte que par exemple
myTextView.setText(Html.fromHtml("<b>Testheader</b> - Testcontent"));
fonctionne! Notez que cela ne fonctionne que pourSpanned
le moment. Il pourrait peut-être être modifié pour fonctionner avecString
et dans lesSpanned
deux cas.la source
Pour ceux qui sont intéressés, voici un port C # Xamarin.Android de la belle solution de Micah:
la source
Pour ajouter
...
à la fin de la deuxième ligne, en économisant 1 ligne si le texte est court:la source
Ajoutez simplement du code dans votre activité
cela ajoutera des points de suspension à la fin de la vue de texte
la source
Étendez TextView et remplacez ces méthodes:
la source
C'est ma solution. vous pouvez télécharger la démo sur mon github. https://github.com/krossford/KrossLib/tree/master/android-project
Cette capture d'écran était une démo qui
maxLines = 4
, je pense, fonctionne bien.la source
J'ai eu le même problème. Je l'ai corrigé en supprimant simplement android: ellipsize = "marquee"
la source
Le code a très bien fonctionné! Vous pouvez surcharger la méthode onSizeChanged, sinon seulement le texte doit être modifié.
la source
Celui-ci a également géré mon html,
LIEN source d'origine
la source
La principale réponse ici de Micah Hainline fonctionne très bien, mais encore mieux est la bibliothèque qui a été construite à partir de celle-ci par l'utilisateur aleb comme il l'a posté dans les commentaires sous la réponse de Micahs:
Il y a quelques fonctionnalités supplémentaires, si vous n'avez besoin que de TextView, c'est ici .
Peut-être que cela aidera les autres à le trouver plus rapidement que moi :-)
la source
C'est tard, mais j'ai trouvé une classe sous licence Apache d'Android, qui est utilisée dans l'application de messagerie stock: https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/184ec73/src/com/android/ mail / ui / EllipsizedMultilineTextView.java
la source
Vous devez vérifier quelques attributs: android: lines, android: minLines, android: maxLines. Pour afficher un maximum de 4 lignes et les ellipsiser, il vous suffit d'avoir android: maxLines et android: ellipsize:
la source
Vous devez l'inclure dans votre texte:
par défaut, c'est vrai. Vous devez le définir explicitement sur false.
la source
code <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="4" android:ellipsize="marquee" android:singleLine="false" android:text="Hai make this a very long string that wraps at least 4 lines!" />