web-dev-qa-db-fra.com

Android: TextView tronque automatiquement et remplace les 3 derniers caractères de String

Si String est plus long que la largeur de TextView, il est automatiquement renvoyé à la ligne suivante. Je peux éviter cela en utilisant Android:singleLine (obsolète) ou en mettant Android:inputType="text". Ce dont j'ai besoin maintenant, c'est de quelque chose qui remplace les 3 derniers caractères de mon String par "...". Comme je n'utilise pas de police monospace, cela sera toujours différent en fonction des lettres utilisées dans mon String. Je me demande donc quel est le meilleur moyen d’obtenir les 3 derniers caractères d’une chaîne dans un TextView et de les remplacer. Peut-être que quelque chose est déjà implémenté dans le framework Android), car cela doit être un problème courant.

120
znq

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 également appliquer des valeurs de gravité à la présentation. J'ai parfois vu des vues "auto-étirer" sans elles.

262
Nate

J'ai trouvé un travail intéressant pour résoudre ce problème.

maxLines=1
ellipsize=end
scrollHorizontally=true

Le truc, c’est cette dernière affirmation sur le défilement horizontal. Cela fonctionne au moins sur la v2.2.

32
BonanzaDriver

Par programme, 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);
3
xevser