web-dev-qa-db-fra.com

TextView Ellipsize (...) ne fonctionne pas

Je veux avoir un seul TextView ligné pour afficher 3 points à la fin lorsque le texte est plus long que le TextView. Je ne sais pas pourquoi - mais je ne comprends pas.

J'ai déjà tourné la tête autour de questions StackOverflow similaires, mais je me suis retrouvé sans solution. Peut-être que quelqu'un a des conseils utiles.

<LinearLayout 
    Android:layout_height="wrap_content" 
    Android:layout_width="fill_parent"
    Android:orientation="vertical">

    <TextView 
        Android:textStyle="bold" 
        Android:text="Full Name" 
        Android:layout_height="wrap_content" 
        Android:textSize="16sp"
        Android:layout_width="wrap_content" 
        Android:id="@+id/lName"
        Android:layout_gravity="center_vertical" 
        Android:maxLines="1"
        Android:ellipsize="end"/>
</LinearLayout>

Le LinearLayout ci-dessus est imbriqué dans 2 autres LinearLayouts. C'est peut-être important de savoir. J'ai déjà essayé l'attribut "singleLine" aussi, mais certains disent que c'est obsolète et qu'il ne fonctionne pas de toute façon.

23
Bins Ich

Ajoutez les styles suivants dans votre fichier de styles (généralement styles.xml):

<style name="autoscroll">
    <item name="Android:singleLine">true</item>
    <item name="Android:ellipsize">Marquee</item>
    <item name="Android:marqueeRepeatLimit">Marquee_forever</item>
    <item name="Android:focusable">true</item>
    <item name="Android:focusableInTouchMode">true</item>
    <item name="Android:scrollHorizontally">true</item>
</style>

Ajoutez ensuite le style @style/autoscroll à votre TextView:

<TextView Android:id="@+id/lName"
      style="@style/autoscroll" />

Vous pouvez réutiliser facilement votre fonction de défilement automatique lorsque vous le souhaitez.

46
Stefano Ortisi

Ajoutez ceci dans votre xml pour le TextView:

        Android:maxWidth="200dp" 
        Android:maxLines="1" 

Comme

        Android:singleLine="true"  

est obsolète.

18
Khan
Android:id="@+id/lName" Android:layout_width="150dp"
    Android:layout_height="wrap_content"
    Android:ellipsize="end"
    Android:singleLine="true"
    Android:text="Avinljhakjhsajkhakjshda"
    Android:textSize="16sp"
9
LuminiousAndroid

Cela fonctionne avec singleLine="true" mais cet attribut est désormais obsolète, utilisez ellipsize et scrollHorizontally="true" au lieu.

1
flawyte

Cela ne fonctionne pas avec moi à moins d'ajouter l'attribut 'Android: ems'

        Android:ellipsize="end"
        Android:singleLine="true"
        Android:ems="8"
0
Zain