45 votes

Android: quelque Chose de mieux que android:ellipsize="fin" pour ajouter "..." pour tronquée de longues Chaînes?

Cette propriété rend

"à court et à très long terme"

pour

et bref""

. Mais je veux avoir qch. comme

"court et très-lon..."

Droit maintenant, je tronquer la Chaîne dans du code Java. Cependant, c'est sur la base du nombre de caractères et non pas la longueur réelle de la liaison. 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

Juste remarqué, cette propriété en fait ajoute "..." dans quelques cas. Mais pas tous d'entre eux:

12345678901234567890 devient "12345678901234..."

Cependant,

"1234567890 1234567890" devient "1234567890" et pas "1234567890 123..."

Mise à jour 2

Maintenant, elle est vraiment funky! Je viens de mettre en singleLine=true et supprimé maxLine (Le bug apparaît avec et sans la mise en ellipsize attribut)...

alt text

C'est prendre une capture d'écran de Motorola Milestone avec android 2.1 update 1. Même chose sur le HTC Desire avec la même version d'android

Mise à jour 3

Maintenant, j'utilise android:ellipsize="rectangle de sélection". Qui semble être le seul qui fonctionne correctement réglage. C'est aussi que le déplacement, quand concentré. Je le vois dans de nombreuses autres applications. Je suppose que c'est une pratique courante.

67voto

bakkay Points 382

Si c'est pour une seule ligne essayez ceci:

android:ellipsize="end"
android:maxLines="1"
android:scrollHorizontally="true"
android:singleLine="true"

Il a travaillé pour moi.

26voto

Maragues Points 9461

J'ai eu un problème similaire et la définition de cette propriété pour le TextView aidé:

android:singleLine="true"

Aussi, j'ai été en utilisant un RelativeLayout donc j'ai limité l'espace le TextView pourrait prendre par la définition d'une marge de gauche sur un bouton à la droite de la TextView, de sorte que le texte ne peut pas s'étendre plus loin et est obligé de tronquer son contenu.

C'est peut-être pas la solution à votre problème, mais il m'a aidé dans une situation similaire.

1voto

Josh Points 4631

Peut-être que vous pourriez jeter un oeil à la façon dont le privé Ellipsizer classe utilisée par le système d'exploitation des œuvres et de le modifier pour votre application?

1voto

OneWorld Points 6140

Voir ma mise à jour 3. La solution a été à l'aide de "rectangle de sélection". J'ai vu de nombreuses applications de le faire à ce moment. Maintenant, avec les nouvelles versions d'Android, cette fonctionnalité est plus probable fixe et fonctionne comme prévu. (je suppose)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X