125 votes

Comment puis-je afficher des ellipses sur mon TextView si elle est supérieure à la ligne 1 ?

J'ai la mise en page suivante qui ne fonctionne pas :

 <LinearLayout 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:id="@+id/experienceLayout" 
    android:background="#ffffff" 
    android:layout_height="match_parent" 
    android:paddingLeft="6dp" 
    android:paddingRight="6dp" 
    android:paddingBottom="6dp" 
    android:paddingTop="6dp">

    <TextView 
        android:layout_weight="1" 
        android:id="@+id/experienceLabel" 
        android:text="Experience" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:textStyle="bold">
    </TextView>

    <TextView 
        android:id="@+id/experienceTextView" 
        android:text="TextView" 
        android:layout_height="wrap_content" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:ellipsize="end" 
        android:lines="1" 
        android:maxLines="1" 
        android:singleLine="true" 
        android:fadeScrollbars="false">
    </TextView>

</LinearLayout>

339voto

BonanzaDriver Points 1959

Il s’agit d’un problème courant. Essayez d’utiliser les éléments suivants :

.............. le scrollHorizontally est la « sauce spéciale » qui le fait fonctionner.

38voto

XYZ Points 2550

Cela fera également une seule ligne avec ellipsise

25voto

Mohamed Ibrahim Points 31

Utilisez ceci


Ne l’utilisez pas sans être pleinement conscient de la sortie

Lorsque vous `` l’utilisez, il tronquera un certain temps la plupart des caractères.

18voto

Marilia Points 989

La façon dont cela a fonctionné pour moi sur plusieurs appareils / API était par programme comme ceci (où tv est votre TextView):

     if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }

4voto

SDK4551 Points 21

Ainsi, toutes les réponses ci-dessus répondent à l’exigence que seulement 1 ligne, puis les points de suspension doivent apparaître. Toutefois, si vous souhaitez que les points de suspension apparaissent après certaines lignes de texte, vous devez utiliser ce qui suit :

Avec cela, les points de suspension n’apparaîtront qu’après 2 lignes. Remarque: Il est important d’avoir singleLine comme false.

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