2013-06-15 13 views
21

Ich habe festgestellt, dass android:singleLine="true", wenn in der TextView Listitem in ListView verwendet, Scrollen sehr Laggy macht. Obwohl ich eine Alternative android:maxLines="1" gefunden habe, bin ich sehr neugierig zu wissen, warum android:singleLine="true" Scrollen sehr Laggy macht und auch wenn es laggy ist, warum Android immer noch das verwendet?Warum macht android: singleLine = "true" das ListView Scrollen sehr verzögert?

+2

+1 für sehr interessante Frage – verybadalloc

+0

das ist interessant, will das später sehen. – Milan

Antwort

24

Es scheint, dass diese 2 Funktionen tatsächlich nicht genau die gleichen Ergebnisse geben.

Nach einem interessanten Thema auf this blog von Radley Marx geschaffen wird singleLine meist jetzt veralten, aber trotzdem in einigen Fällen sinnvoll sein, weil es nicht die Zeilenumbrüche betrachten und das Maximum von Text in der einzigen Zeile sammeln:

Der größte Vorteil ist, dass singleLine Zeilenumbrüche (\ n) ignorieren und den gesamten Text in einer Zeile platzieren, manchmal sogar Text zusammendrücken. MaxLines stört nicht.

Schließlich schließt er:

Obwohl single ist veraltet, es ist immer noch in den harten Einsatz in älteren Android-Apps auf dem alten Android-Handys, so dass es nicht wirklich vor sich geht weg. Aber es wurde lange aufgegeben und tendiert dazu, auf unerwartete Weise zu brechen. Verwenden Sie maxLines wann immer Sie können und singleLine nur wenn Sie müssen.

Dann, wenn Sie überprüfen Android Dokumentation über die beiden Methoden: singleLine und maxLines, können Sie sehen, dass die erste von einem Text behandelt wird TransformationMethod, die erklären, würde ich raten, warum es viel langsamer als der zweite ist.

+6

Warum funktioniert ellipsize = "end" nicht für Text, um es zu verkürzen (fügt nicht das ... zum Ende des Satzes hinzu), wenn minLines maxLines verwendet wird, funktioniert aber gut, wenn ich singleLine verwende? –

+3

Ich benutze immer noch 'singleline', weil ich Wagenrücklauf ignorieren möchte, was' maxLine' nicht unterstützt. Es ist einfach idiotisch, das Verhalten zu ändern, wenn Methoden abgelehnt werden. –

+1

In meinem Fall geben singleLine = true und maxLines = 1 unterschiedliche Ergebnisse. Nicht nur der erste fügt Ellipsize ("...") am Ende der Zeile hinzu. In meinem Fall wird auch requestLayout() in ListView nicht aufgerufen, aber die zweite Variante (maxLines = 1) ruft auf. Letzteres führt zu einigen Fehlern. Also, ich bevorzuge SingleLine. – CoolMind

Verwandte Themen