Android: TextView tronquer automatiquement et remplacer 3 derniers caractères de la chaîne

StackOverflow https://stackoverflow.com/questions/1666736

  •  13-09-2019
  •  | 
  •  

Question

Si un String est plus long que la largeur de la TextView il passe automatiquement sur la ligne suivante. Je peux éviter cela en utilisant android:singleLine (dépréciée) ou en réglant android:inputType="text". Ce que je dois maintenant quelque chose qui remplace les 3 derniers caractères de mon String avec « ... ». Puisque je ne suis pas en utilisant une police ce sera toujours à espacement fixe différent selon les lettres utilisées dans mon String. Je me demande quelle est la meilleure façon d'obtenir les 3 derniers caractères d'une chaîne dans un TextView et de les remplacer. Peut-être il y a déjà quelque chose mis en œuvre dans le cadre Android, car cela doit être un problème commun.

Était-ce utile?

La solution

Vous devriez pouvoir utiliser la propriété « ellipsize » d'une vue de texte:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

Vous devrez peut-être appliquer les valeurs de gravité à la mise en page trop; Je l'ai parfois vu « auto-étirement » vues sans eux.

Autres conseils

trouvé un intéressant travail d'un tour à ce problème.

maxLines=1
ellipsize=end
scrollHorizontally=true

L'astuce est que la dernière déclaration au sujet de défilement horizontal .... vérifier. Il fonctionne au moins sur v2.2.

Programmatically, vous pouvez utiliser:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top