J'ai un TextView défini pour ellipsize mais ne le fais pas quand je le mets. Des idées?
<TextView
Android:id="@+id/LegalsView"
Android:ellipsize="end"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textAppearance="?android:attr/textAppearanceMedium" />
Essayer:
Android:singleLine="true"
Android:layout_width="wrap_content"
permettra à la TextView
de s’étendre aussi longtemps que nécessaire (y compris en sortant de l’écran). Pour le rendre ellipsize, vous devrez définir une largeur comme citoyen recommandé, de préférence avec Android:layout_width="fill_parent"
au lieu d'une valeur absolue.
Conseils supplémentaires: Vous voudrez également définir les maxLines de la TextView
(probablement 1) et pour que les ellipsis ("...") apparaissent, vous devrez probablement également définir
Android:scrollHorizontally="true"
Vous devez faire correspondre les paramètres pour Android permet de calculer correctement la position de l'objet. A plusieurs combinaisons possibles, et dépend du reste de la mise en page est sur la même ligne.
Ceci est une combinaison qui fonctionne:
Android:layout_width="0dip" // dynamic width
Android:layout_weight="1" // less weight, other objects still "0"
Android:ellipsize="end" // ... into end of text (right)
Android:singleLine="true" // one line, deprecated, but necessary for some ambients
Android:maxLines="1" // one line, new mode
En résumé, vous indiquez le poids, si vous utilisez une disposition dynamique, ou seulement une taille fixe, puis indiquez qu’il n’ya plus qu’une ligne et configure le mode d’affichage "...".
La seule façon dont j'ai pu faire ce travail est de définir width="1dp"
, weight="1"
, ellipsize="end"
, maxLines="1"
et scrollHorizontally="true"
. Les deux premiers ont le même type d'effet que width="match_parent"
sans que le widget ne se développe à partir du bord de l'écran. Les trois paramètres restants doivent tous être définis pour que le texte soit ellipsé.
Mon application a commencé à ignorer maxlines & ellipsize lorsque j'ai ajouté
Android:textIsSelectable="true"
Il semble que ces options ne sont pas compatibles ensemble.
Si vous essayez de faire fonctionner des Ellipsis multilignes, cela ne fonctionne malheureusement pas très bien. Il s'agit d'un bogue connu sur la plate-forme Android et, autant que je sache, il n'a pas été corrigé.
Dans une TextView
, le mieux que vous puissiez obtenir est une ellipsage de 2 lignes (qui peut être obtenu en définissant
Android:maxLines="2"
Reportez-vous à this link.
Même avec une largeur absolue comme mentionné dans une autre réponse, il ne vous donne toujours que 2 lignes d’ellipsis au maximum. (Mais comme mentionné également, une seule ligne Ellipsis est réalisable). Ainsi, par exemple, votre texte pourrait remplir votre TextView de 8 lignes, mais ressemblera à ceci lorsque vous activez Ellipsis:
+ ----------------------------------------------------- - + | | | Ceci est mon texte sympa qui est censé remplir le | | texte entier mais malheureusement à cause de t ... | | | | | | | | | | | | | | | | | | | | | | | | | | | + ------------------------------------------- -------- +
Si vous connaissez la taille de votre TextView, vous pouvez utiliser un composant personnalisé disponible ici (Malheureusement, le projet de code Google qui l’hébergeait à l’origine semble avoir disparu, ce lien est donc tout ce que j’ai pu trouver).
Si vous ne définissez pas de largeur spécifique pour votre TextView
, le texte sera ellipsé en premier lorsque votre texte atteindra la largeur de la vue parent.
Cette solution fonctionne:
Android:ellipsize="end"
Android:singleLine="false"
Android:lines="3"
Android:maxLines="3"
La largeur peut également être définie sur "wrap_content"
Vous changez votre layout_width en un certain dp au lieu de wrap_content
et
utilisation
Android: singleLine = "true"
Android: ellipsize = "end"
code:
Android:layout_width="50dp"
Android:layout_height="wrap_content"
Android:text="check this text"
Android:id="@+id/textView"
Android:singleLine="true"
Android:ellipsize="end"/>
Ne fonctionne que l'exécution, faites quelque chose comme ça:
textView.setEllipsize(TruncateAt.END);
textView.setLines(1);
textView.setHorizontallyScrolling(true);
textView.setText("Long text goes here");
Vous pouvez également définir maxLines comme suit:
<TextView
Android:id="@+id/txt_title"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:maxLines="3"
Android:ellipsize="end"
Android:textStyle="bold"/>
Des ellipses apparaissent lorsque le texte dépasse le maxLines défini.