Ich muss eine mehrzeilige Textansicht ellipsen. Meine Komponente ist groß genug, um mindestens 4 Zeilen mit der Ellipse anzuzeigen, aber nur 2 Zeilen werden angezeigt. Ich habe versucht, die minimale und maximale Anzahl von Zeilen der Komponente zu ändern, aber es ändert sich nichts.
163
Antworten:
Hier ist eine Lösung für das Problem. Es ist eine Unterklasse von TextView, die tatsächlich für die Ellipsengröße funktioniert. Der in einer früheren Antwort aufgeführte Android-Textansicht-Multiline-Ellipse-Code ist unter bestimmten Umständen fehlerhaft und befindet sich unter der GPL, was für die meisten von uns nicht wirklich funktioniert. Sie können diesen Code frei und ohne Namensnennung oder unter der Apache-Lizenz verwenden, wenn Sie dies bevorzugen. Beachten Sie, dass es einen Listener gibt, der Sie benachrichtigt, wenn der Text ellipsiert wird, was ich selbst sehr nützlich fand.
quelle
In meiner App hatte ich ein ähnliches Problem: 2 Zeichenfolgen und schließlich "..." hinzufügen, wenn die Zeichenfolge zu lang war. Ich habe diesen Code in einer XML-Datei in einem Textview-Tag verwendet:
quelle
setText(..., TextView.BufferType.SPANNABLE);
.Ich bin auch auf dieses Problem gestoßen. Es gibt einen ziemlich alten Fehler, der unbeantwortet bleibt: Fehler 2254
quelle
Versuchen Sie dies, es funktioniert für mich, ich habe 4 Zeilen und es fügt das "..." am Ende der letzten / vierten Zeile hinzu. Es ist das gleiche wie die Antwort der Moral, aber ich habe singeLine = "false" drin.
quelle
Habe dieses Problem und schließlich baue ich mir eine kurze Lösung. Sie müssen nur die gewünschte Linie manuell ellipsen, Ihr maxLine-Attribut schneidet Ihren Text.
In diesem Beispiel schneiden Sie Ihren Text für maximal 3 Zeilen
quelle
Ich habe die Lösungen von Micah Hainline, Alex Băluț und Paul Imhoff kombiniert, um eine mehrzeilige Ellipsengröße zu erstellen
TextView
, die auchSpanned
Text unterstützt .Sie müssen nur eingestellt
android:ellipsize
undandroid:maxLines
.Vollständige Quelle: EllipsizingTextView.java
quelle
In meinem Fall muss dies nicht in Java codiert werden. Alles funktioniert wie erwartet. Keine Notwendigkeit für so etwas
android:singleLine="false"
.Es scheint jedoch einen Fehler in der Layoutvorschau von Android Studio (v3.0) zu geben:
Unter Android 7.1.1 auf meinem Gerät funktioniert dies:
quelle
Basierend auf den Lösungen von Micah Hainline und Alebs Kommentar kam ich zu dem folgenden Ansatz, der mit überspannten Texten funktioniert, so dass zB
myTextView.setText(Html.fromHtml("<b>Testheader</b> - Testcontent"));
funktioniert! Beachten Sie, dass dies derzeit nur funktioniertSpanned
. Es könnte vielleicht modifiziert werden, um damit zu arbeitenString
und soSpanned
oder so.quelle
Für diejenigen, die interessiert sind, ist hier ein C # Xamarin.Android-Port von Micahs schöner Lösung:
quelle
So fügen Sie
...
am Ende der zweiten Zeile 1 Zeile ein, wenn der Text kurz ist:quelle
Fügen Sie einfach Code in Ihre Aktivität ein
Dadurch werden am Ende der Textansicht Auslassungspunkte hinzugefügt
quelle
Erweitern Sie TextView und überschreiben Sie diese Methoden:
quelle
Das ist meine Lösung. Sie können die Demo auf meinem Github herunterladen. https://github.com/krossford/KrossLib/tree/master/android-project
Dieser Screenshot war eine Demo
maxLines = 4
, die meiner Meinung nach gut funktioniert.quelle
Ich hatte das gleiche Problem. Ich habe es behoben, indem ich einfach android gelöscht habe: ellipsize = "marquee"
quelle
Code hat sehr gut funktioniert! Sie können die onSizeChanged-Methode überladen, wenn nicht nur Text geändert werden muss.
quelle
Dieser handhabte auch mein HTML,
Ursprüngliche Quelle LINK
quelle
Die beste Antwort hier von Micah Hainline funktioniert großartig, aber noch besser ist die Bibliothek, die von Benutzer Aleb daraus erstellt wurde, wie er in den Kommentaren unter Micahs Antwort gepostet hat:
Es gibt noch einige weitere Funktionen. Wenn Sie nur die Textansicht benötigen, finden Sie diese hier .
Vielleicht hilft das anderen, es schneller zu finden als ich :-)
quelle
Dies ist spät, aber ich habe eine Apache-lizenzierte Klasse von Android gefunden, die in der Stock-Mail-App verwendet wird: https://android.googlesource.com/platform/packages/apps/UnifiedEmail/+/184ec73/src/com/android/ mail / ui / EllipsizedMultilineTextView.java
quelle
Es gibt einige Attribute, die Sie überprüfen sollten: android: lines, android: minLines, android: maxLines. Um maximal 4 Zeilen anzuzeigen und die Größe zu ändern, benötigen Sie nur android: maxLines und android: ellipsize:
quelle
Sie müssen dies in Ihre Textansicht aufnehmen:
Standardmäßig ist es wahr. Sie müssen es explizit auf false setzen.
quelle
code <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:maxLines="4" android:ellipsize="marquee" android:singleLine="false" android:text="Hai make this a very long string that wraps at least 4 lines!" />