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.
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.
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.
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);