Cette propriété fait
"mot court et très long"
à
"court et"
. Mais je veux avoir un smth. comme
"court et très solitaire ..."
En ce moment, je tronque la chaîne en Java. Cependant, c'est basé sur le nombre de caractères et non sur la longueur réelle du lien. Donc, le résultat n'est pas très agréable.
String title;
if(model.getOrganization().length() > 19) {
title = model.getText().substring(0, 15).trim() + "…";
} else {
title = model.getText();
}
((TextView) findViewById(R.id.TextViewTitle)).setText(title);
Mise à jour
Je viens de remarquer que cette propriété ajoute en fait "..." dans quelques cas. Mais pas dans tous:
12345678901234567890 devient "12345678901234 ..."
Cependant,
"1234567890 1234567890" devient "1234567890" et non "1234567890 123 ..."
Mise à jour 2
Maintenant ça devient vraiment génial! Je viens de définir singleLine = true et supprimé maxLine (le bogue apparaît avec et sans définir l'attribut ellipsize) ...
Il s'agit d'une capture d'écran de Motorola Milestone avec Android 2.1 mise à jour 1. La même chose se produit sur HTC Desire avec la même Android version
Mise à jour 3
Maintenant, j'utilise Android: ellipsize = "Marquee". Cela semble être le seul cadre qui fonctionne correctement. Il ne bouge également que lorsqu'il est concentré. Je le vois également dans de nombreuses autres applications. Je suppose que sa pratique courante.
Voir ma mise à jour 3. La solution de contournement utilisait "Marquee". J'ai vu de nombreuses applications faire cela en ce moment. Maintenant, avec les nouvelles versions de Android cette fonctionnalité est très probablement corrigée et fonctionnera comme prévu. (Je suppose)
Si c'est pour une seule ligne, essayez ceci:
Android:ellipsize="end"
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:singleLine="true"
Ça a marché pour moi.
J'ai eu un problème similaire et la définition de cette propriété sur TextView a aidé:
Android:singleLine="true"
En outre, j'utilisais un RelativeLayout, j'ai donc limité l'espace que le TextView pouvait prendre en définissant une marge gauche sur un bouton à droite du TextView, de sorte que le texte ne puisse pas se développer davantage et soit obligé de tronquer son contenu.
Ce n'est peut-être pas la solution à votre problème, mais cela m'a aidé dans une situation similaire.
Peut-être pourriez-vous voir comment fonctionne la classe Ellipsizer privée utilisée par le système d'exploitation et la modifier pour votre application?
Modifier: voici un lien de travail - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/Java/Android/text/Layout.Java#18