web-dev-qa-db-fra.com

Comment afficher 3 points à la fin du texte dans textview

Je sais que cette question est posée à plusieurs reprises, j'ai passé en revue toutes les solutions mais le problème est toujours le même.

je veux que ma longueur de texte soit de 50 caractères. maintenant il vient en 2 lignes. 

Voici ce que j'ai fait:

 <TextView
            Android:id="@+id/notification_Message"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_below="@+id/notification_head"
            Android:layout_centerHorizontal="true"
            Android:layout_margin="10dp"
            Android:gravity="center"
            Android:ellipsize="end"
            Android:maxLength="50"
            Android:text=" Hello developer. please check this message for long length. max length to 50 characters. "   

            Android:textSize="20sp" />

Le texte ici est juste un exemple de texte que j'ai ajouté. il n’affiche pas 3 points à la fin mais affiche un message jusqu’à 50 caractères. J'ai essayé max lignes aussi, ligne unique false aussi. mais pas de résultat positif ... Je ne veux pas non plus gérer cette chose par programmation en ajoutant logiquement trois points.

S'il vous plaît aider

33
Anchit Mittal

Créez une largeur prédéfinie pour votre TextView et ajoutez ces attributs (Crier à @ T-D)

Android:ellipsize="end"
Android:maxLines="1"

MaxLines veillera à ce que votre texte ne soit pas affiché sur deux lignes et l’ellipsize ajoutera les trois points à la fin. 

Ancienne réponse

Android:ellipsize="end"
Android:singleLine="true"
73
Ibrahim Yildirim

Pour une ligne de texte avec un point mais maintenant son Depreciated alors n'utilisez plus singleLine

Grâce à ce post, j'ai découvert que montrer un point après la fin du texte si nous avons plus d'une ligne, ça marche pour moi :)

Android:ellipsize="end"
Android:maxLines="2"

Postez ici cette réponse car toutes les réponses ici concernent une seule ligne et non pas plusieurs lignes

28
Lokesh

Android:ellipsize fonctionnera uniquement avec:

Android:singleLine="true"

ou

Android:maxLines="#any number#"

Android:scrollHorizontally="true"

Parce que maxLength tronque le texte.

Vous devez donc gérer l’étiquette avec le code si vous voulez n’afficher que 50 caractères + points, ou laisser deux lignes pour la vue texte.

    <TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:ellipsize="end"
    Android:maxLines="2"
    Android:scrollHorizontally="true"
    Android:text="Hello developer. please check this message for long length. max length to 50 characters."
    Android:textSize="20sp" />
10
Manuel Spigolon

Le Android:singleLine="true" est obsolète

mieux utiliser

Android:maxLines="1"

etAndroid:ellipsize="end"pour ajouter "..." à la fin du texte

6
UmAnusorn

Utilisez singleLine = "true" pour texte limité par singleLine

4
Viswanath Lekshmanan

L'approche de @Lokesh fonctionne bien.

Android:ellipsize="end"
Android:maxLines="2"

Mais je réalise qu’un problème est que TextView sera tronqué par Word (par défaut). Montrer si nous avons un texte comme:

test long_line_without_any_space_abcdefgh

le TextView affichera: 

test ...

Et j'ai trouvé une solution pour gérer ce problème, remplacer les espaces par le caractère unicode no-space space, cela permet à TextView d'envelopper des caractères au lieu de mots:

yourString.replace(" ", "\u00A0");

Le résultat: 

test long_line_without_any_space_abc ...

2

Moi aussi je me débattais avec ça. Android:maxLength n'avait aucun effet alors j'ai joué avec Android:maxWidth et cela a fonctionné.

Commander mon extrait ci-dessous.

<TextView
        Android:id="@+id/tv_comment_author"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:maxWidth="120dp"
        Android:singleLine="true"
        Android:ellipsize="end"
        Android:text="@string/dummy_text"/>
1
Kshitij

Créez votre personnalisation TextView:

<com.xyz.CustomizedTextViewName
        Android:id="@+id/app_title"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_gravity="center_vertical"
        Android:ellipsize="end"
        Android:singleLine="true"
        Android:maxEms="10"

        app:typeface="roboto_bold"/>
1
Sanket Prabhu

C'est la réponse que vous voulez:

    <TextView
        Android:id="@+id/tv_title"
        Android:layout_width="0dp"
        Android:layout_height="match_parent"
        Android:layout_weight="wrap_content"
        Android:text="Title"
        Android:maxLines="1"
        Android:ellipsize="end"
        Android:maxWidth="195dp"
        Android:textColor="@color/white"
        Android:textSize="14dp"
        Android:gravity="center"
        />
1
viral 9966

vous pouvez le faire par xml:

<TextView 
    Android:id="@+id/textview"
    Android:maxLines="1" // or any number of lines you want
    Android:ellipsize="end" />
0
Khalid Taha

Si singleLine="true" est obsolète dans xml , vous souhaitez toujours utiliser le comportement d'une seule ligne, puis utilisez la méthode tv.setSingleLine(true); dans le code.

0
Radha Krishna
<TextView
            Android:id="@+id/txt__customizer_item"
            Android:layout_width="wrap_content"
            Android:layout_height="40dp"
            Android:gravity="center"
            Android:paddingRight="20dp"
            Android:singleLine="true"
            Android:text=" Hello developer. please check this message for long length. max length to 50 characters. "
            Android:textAppearance="@Android:style/TextAppearance.Medium"
            Android:textColor="@color/light_blue"
            Android:textSize="20sp" />

Cela fonctionne pour me.give padding du côté droit.il affichera automatiquement ...

0
yuva ツ