Android - Erweiterbare Textansicht mit Animation
Ich habe eine TextView
was Erstens zeigt einen kleinen Teil eines langen Textes.
Kann der Benutzer drücken Sie auf "sehen Sie mehr" button zu erweitern, die TextView
und den rest des Textes.
Making-tests kann ich erreichen, dass nur durch den Austausch der Wert der TextView.setMaxLines
zwischen 4 für das kollabieren und Integer.MAX_VALUE für den ausbau.
Nun, ich möchte, dass dieses Verhalten wäre begleitet von einer animation. Ich weiß, dass in diese Frage eine Lösung ist fast fertig, aber ich habe versucht es zu implementieren, und ich habe kein Erfolg.
Kann mir jemand helfen mit diesem?
Vielen Dank im Voraus.
InformationsquelleAutor der Frage Jorge Gil | 2013-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie überprüfen Sie mein blog-post auf ExpandableTexTView:
Die Idee ist, zunächst die TextView zeigt einen kleinen Teil eines langen Textes und, wenn darauf geklickt wird, wird sich zeigen, der rest des Textes.
So, hier ist der code, wie ich es gelöst.
Und fügen Sie folgende Zeile in Ihre attr.xml
Legen Sie die folgenden in Ihrer main.xml
Und testen Sie Ihre Tätigkeit
Referenz: Android – TextView Erweiterbar
InformationsquelleAutor der Antwort rokonoid
Verwenden Sie ein ObjectAnimator.
Diese wird vollständig erweitern Sie Ihre TextView über 200 Millisekunden. Sie können ersetzen
tv.getLineCount()
mit jedoch viele Zeilen von text, den Sie ausblenden möchten Sie es wieder nach unten.----Update - - - - -
Hier sind einige Komfort-Methoden Sie können die drop-in:
Wenn Sie auf API 16+, die Sie verwenden können, textView.getMaxLines() leicht feststellen, wenn Ihr textView erweitert wurde oder nicht.
Hinweise:
Wenn maxLines nicht festgelegt wurde, oder Sie haben legen Sie die Höhe der textView in Pixelkönnen Sie eine ArrayIndexOutOfBounds-exception.
Den oben genannten Beispielen immer 200ms, ob Sie erweitern Sie nur 3 Zeilen oder 400. Wenn Sie möchten, eine gleichbleibende rate der expansion, können Sie etwas wie das hier tun:
InformationsquelleAutor der Antwort Amagi82
Erstellte ich eine open-source-Bibliothek für diesen, weil ich nicht zufrieden war mit den anderen Lösungen, die ich im internet gefunden. Ich habe das Ding auf GitHub, und es ist kostenlos zu verwenden, von niemandem.
Mithilfe der ExpandableTextView ist sehr einfach, es ist einfach ein normales TextView mit einigen zusätzlichen Funktionalität Hinzugefügt, um es. Durch die Definition der android:maxLines Attribut, können Sie die Standardanzahl der Zeilen für die TextView eingeklappten Zustand.
In Ihrer Aktivität oder Fragment:
Können Sie ganz einfach fügen Sie diese Bibliothek als ein gradle Abhängigkeit von Ihrem Android-Projekt. Werfen Sie einen Blick auf das Projekt auf Github für weitere Anweisungen:
https://github.com/Blogcat/Android-ExpandableTextView
InformationsquelleAutor der Antwort Cliffus
Glatt ausbau (mit heigh & ObjectAnimator)
Zur info: benötigt einen API 11
P. S. ich gehe davon aus TextView begrenzt durch maxLines.
P. S. S. Danke Amagi82 für ObjectAnimator Beispiel
InformationsquelleAutor der Antwort igork
Wenn Sie wollen, es zu tun auf der Grundlage der Anzahl der Zeilen, hier ist ein Weg, es zu tun:
(Gist der vollständige code)
InformationsquelleAutor der Antwort vedant
Siehe den link unten für erweiterbare TextView mit Optionen für eine Anzahl von Linien und eher weniger text.
Skalierbarer Text-Ansicht(Mehr Anzeigen Weniger Anzeigen)
Fügen Sie folgende Zeile im Java-Klasse, die nach der Einstellung text im TextView.
InformationsquelleAutor der Antwort Mihir Trivedi
Hier ist was für mich gearbeitet, unter Verwendung einiger der oben genannten Antworten (ich bin mit ButterKnife im Beispiel):
Wenn der Benutzer klickt auf der Beschreibung, wird es entweder zu-oder aufklappen, basierend auf die maximale Anzahl von Linien. Dies funktioniert nur für API 16+.
Das problem, dass ich begegnete, war, dass die Anzahl der Zeilen war die Rückgabe von null an den Punkten, und line-count und max count wurden die gleichen Werte an bestimmten stellen.
InformationsquelleAutor der Antwort Ray Hunter
Können Sie so etwas tun. Es funktioniert in jeder Art von Blick, ob eine normale Ansicht, oder ein Blick in ListView oder RecyclerView:
In
onCreate()
oder etwas ähnliches hinzufügen:Diese können Sie erweitern/reduzieren eine TextView, indem Sie jede Ansicht, die Sie wollen. (Sie können sicher wählen Sie die TextView selbst auch)
InformationsquelleAutor der Antwort Hussein El Feky
In ListView oder RecyclerView anstatt OnGlobalLayoutListener wir verwenden immer OnPreDrawListener. Dieser callback wird ausgelöst, auch für die nicht sichtbaren Zeilen am start. Aus der offiziellen Dokumentation:
InformationsquelleAutor der Antwort Mohammad
In Erster Linie für das hinzufügen von "Mehr" bis der text zu Ende ist, präsentiere ich Ihnen meine TruncatingTextView. Nach viel Experimentieren, es scheint zu funktionieren nahtlos beim laden dieser text Ansichten in einer RecyclerView Element anzeigen.
Können Sie immer wählen, um Ihre eigenen attribute für truncateAfter, und keiner der oben genannten Antworten, fügen Sie die animation für erweitern/reduzieren (ich habe nicht code zu behandeln, erweitern/reduzieren, aber auch leicht getan mit einer der obigen animation Antworten).
Ich lege diese hier mehr für die anderen, die versuchen, Sie zu finden "Mehr Anzeigen" - Funktionalität für Ihre text-Ansichten.
InformationsquelleAutor der Antwort Chantell Osejo
Nun, es ist noch einfacher, geben Sie die angeforderten TextView mit animation und alle erforderlichen Steuerelemente mit diesem awesome Bibliothek ExpandableTextViewin dieser Bibliothek haben Sie nur fügen Sie es zu Ihrer gradle und dann definieren es wie folgt in Ihre xml:
und nach, dass es verwenden, in Ihrem code wie:
Und wie Sie sehen, können Sie die maximale Anzahl der Linien, die Sie wollen, und die animation Dauer und alle erforderlichen Einstellungen für Ihre TextView erweitern-Technik.
InformationsquelleAutor der Antwort Muhammed Refaat