Android: TextView tronquer automatiquement et remplacer 3 derniers caractères de la chaîne
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.
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);