2010-09-22 2 views
43

This property machtAndroid: Etwas besser als android: ellipsize = "end" hinzufügen "..." zu abgeschnitten langen Strings?

"kurz und sehr lang-Wort"

zu

"kurz und"

. Aber ich möchte etwas haben. wie

"kurz und sehr-lon ..."

Gerade jetzt gestutzt ich den String 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, dieses Hotel gelten eigentlich "..." in wenigen Fällen. Aber nicht in allen von ihnen:

123456789wird "123456789..."

jedoch

"123456789" wird "1234567890" und nicht „1234567890 123 ... "

Update 2

Jetzt wird es wirklich funky! Ich habe gerade festgelegt single = true und entfernt MaxLine (Der Fehler erscheint mit und ohne ellipsize Attribut Einstellung) ...

alt text

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

aktualisieren 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.

Antwort

1

Siehe mein Update 3. Die Problemumgehung verwendete "Laufschrift". Ich habe viele Apps gesehen, die das zu dieser Zeit machen. Nun, mit neuen Versionen von Android ist diese Funktion wahrscheinlich behoben und wird wie erwartet funktionieren. (meine Vermutung)

23

hatte ich ein ähnliches Problem und Setzen dieser Eigenschaft auf die Textview geholfen:

android:singleLine="true" 

Auch ich wurde mit einem RelativeLayout so beschränkt ich den Raum der Textview, indem Sie einen linken Rand auf eine Schaltfläche in Anspruch nehmen könnte das Recht der Textansicht, damit der Text nicht weiter expandieren kann und gezwungen wird, den Inhalt zu kürzen.

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

+1

Hat in meinem Fall nicht geholfen. Übrigens ist "singleLine" veraltet. Ich muss keine Ränder einstellen, es ist bereits abstimmend, aber nicht sehr nett. – OneWorld

+0

überprüfen Sie diese Frage: http://Stackoverflow.com/questions/1698881/cant-get-ellipsis-to-work-on-android Ich weiß, Singleline ist veraltet, lesen Sie die Kommentare in der Bug-Seite von der verknüpften Frage und Sie ' Ich verstehe, warum ich es benutze. – Maragues

+0

Siehe Update 2 oben – OneWorld

1

Vielleicht könnten Sie einen Blick darauf werfen, wie die private Ellipsizer class von der OS funktioniert und ändern Sie es für Ihre App?

Edit: Hier ist ein Arbeits Link - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830

+7

OK, danke! Gibt es weniger zeitaufwendige Vorschläge? – OneWorld

+0

Der obige Link funktioniert nicht mehr. – Kedarnath

+0

Hier gehts Kedarnath - http://androidxref.com/5.1.0_r1/xref/frameworks/base/core/java/android/text/Layout.java#1830 – Josh

61

Wenn es für eine einzelne Zeile ist versuchen Sie dies:

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

Es ist für mich gearbeitet.

+1

Ist 'android: scrollHorizontally =" true "' wirklich notwendig ? Habe es ohne es zu arbeiten. – Mauker

+1

@Mauker Nun, ich habe diese Antwort im Jahr 2012 veröffentlicht, ich bin wirklich beeindruckt, dass die Menschen immer noch einen Workaround dafür finden müssen. Etwas könnte sich geändert haben, fühlen Sie sich frei, es die Antwort zu bearbeiten. : +1: – bakkay

+0

Sie brauchen nicht die maxLines und die scrollHorizontal Eigenschaften – prats110892

Verwandte Themen