Android: Etwas besser als android: ellipsize = "end", um "..." zu abgeschnittenen langen Strings hinzuzufügen?


Answers

Ich hatte ein ähnliches Problem und das Setzen dieser Eigenschaft auf die TextView half:

android:singleLine="true"

Außerdem habe ich ein RelativeLayout verwendet, also habe ich den Platz begrenzt, den der TextView braucht, indem ich einen linken Rand auf einen Button rechts neben dem TextView setze, so dass der Text nicht weiter expandieren kann und gezwungen wird, seinen Inhalt abzuschneiden.

Vielleicht ist es nicht die Lösung für Ihr Problem, aber es hat mir in einer ähnlichen Situation geholfen.

Question

Diese Eigenschaft macht

"kurz und sehr lang"

zu

"kurz und"

. Aber ich möchte etwas haben. mögen

"kurz und sehr ..."

Im Moment trenne ich die Zeichenfolge in Java-Code. Dies basiert jedoch auf der Anzahl der Zeichen und nicht auf der tatsächlichen Länge des Links. Also, das Ergebnis ist nicht sehr nett.

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

Aktualisieren

Gerade bemerkt, diese Eigenschaft fügt tatsächlich "..." in einigen Fällen hinzu. Aber nicht in allen:

12345678901234567890 wird "12345678901234 ..."

Jedoch,

"1234567890 1234567890" wird "1234567890" und nicht "1234567890 123 ..."

Update 2

Jetzt wird es wirklich funky! Ich habe nur singleLine = true gesetzt und maxLine entfernt (Der Fehler erscheint mit und ohne das Attribut ellipsize) ...

Dies ist ein Screenshot von Motorola Milestone mit Android 2.1 Update 1. Das gleiche geschieht auf HTC Desire mit der gleichen Android-Version

Update 3

Jetzt benutze ich android: ellipsize = "marquee". Das scheint die einzige richtig funktionierende Einstellung zu sein. Es bewegt sich auch nur, wenn es fokussiert ist. Ich sehe es auch in vielen anderen Apps. Ich schätze seine übliche Praxis.









Links