web-dev-qa-db-fra.com

Le texte n'est pas ellipsé

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" />
25
digipen79

Essayer:

Android:singleLine="true"
63
Edwin Evans
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"
16
Glendon Trullinger

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 "...".

10
Rodrigo T.

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é.

5
R.L.Watkins

Mon application a commencé à ignorer maxlines & ellipsize lorsque j'ai ajouté

Android:textIsSelectable="true"

Il semble que ces options ne sont pas compatibles ensemble.

5
WigglyWorld

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).

3
Caspar Harmer

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.

2
Wroclai

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"

2
user1774438

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"/>
0
Anandu

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");
0
Egemen Hamutçu

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.

0
Cletus Ajibade