379 votes

Android, Comment limiter la largeur d'un TextView (et ajouter trois points à la fin du texte) ?

J'ai un TextView que je veux limiter en nombre de caractères. En fait, je peux le faire mais ce que je cherche, c'est comment ajouter trois points (...) à la fin de la chaîne. Cela montre que le texte se poursuit. Voici mon XML mais il n'y a pas de points même si le texte est limité.

828voto

hotveryspicy Points 21181

Obsolète:

Ajoutez une autre propriété android:singleLine="true" dans votre Textview

Mis à jour:

android:ellipsize="end" 
android:maxLines="1"

3 votes

Certainement besoin de singleLine quand j'ai juste essayé ça. Même si cela dit obsolète.

53 votes

Android:singleLine="true" est obsolète et a des effets secondaires néfastes. Utilisez plutôt android:ellipsize="end" et maxLine="1"

2 votes

Quels sont les "effets secondaires" de l'utilisation de singleLine? Voir aussi: L'attribut XML singleLine est-il obsolète ou non sous Android?

88voto

CapDroid Points 19038

Essayez cette propriété de TextView dans votre fichier de mise en page..

android:ellipsize="end"
android:maxLines="1"

32voto

Muz Points 1116

Je suppose que vous voulez limiter la largeur à une seule ligne et non la limiter par caractère? singleLine étant obsolète, vous pourriez essayer d'utiliser les éléments suivants ensemble :

android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"

15voto

NayAnesh Gupte Points 451

Par exemple. vous pouvez utiliser

android:maxLength="13"

cela limitera la longueur du texview à 13 mais le problème est que si vous essayez d'ajouter 3 points (...), ils ne s'afficheront pas, car ils seront inclus dans la longueur du texview.

     String nomUtilisateur;
     if (data.length() >= 13) {
            nomUtilisateur = data.substring(0, 13)+ "...";

     } else {

            nomUtilisateur = data;

    }
        textView.setText(nomUtilisateur);

en plus de cela, vous devez utiliser

 android:maxLines="1"

2 votes

Tu ferais mieux d'utiliser "\u2026" au lieu de "...".

0 votes

C'était juste un exemple. Si je mets des chaînes dans Strings.xml, alors je vais certainement opter pour des unicodes. Y a-t-il une raison spécifique pour laquelle vous voulez les mettre ici ?

2 votes

Non. J'ai personnellement récemment appris l'existence de ce caractère dans l'Unicode et j'ai décidé de partager cette connaissance ;)

3voto

Jay Thakkar Points 555

Vous pouvez écrire cette ligne en xml où vous prenez le textview :

android:singleLine="true"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X