Was ich jetzt habe, ist eine ListView von TextView-Elementen. Jedes TextView-Element zeigt einen Text an (die Textlänge variiert zwischen 12 Wörtern und 100+). Ich möchte, dass diese Textansichten einen Teil des Textes anzeigen (sagen wir 20 Wörter oder ungefähr 170 Zeichen).
Wie beschränke ich die Textansicht auf eine feste Anzahl von Zeichen?
Wenn Sie nicht an XML-Lösungen interessiert sind, können Sie dies möglicherweise tun:
String s="Hello world"; Textview someTextView; someTextView.setText(getSafeSubstring(s, 5)); //the text of someTextView will be Hello
...
public String getSafeSubstring(String s, int maxLength){ if(!TextUtils.isEmpty(s)){ if(s.length() >= maxLength){ return s.substring(0, maxLength); } } return s; }
quelle
Verwenden Sie den folgenden Code in TextView
android:maxLength="65"
Genießen...
quelle
Ich habe das mit dem
maxEms
Attribut gemacht.<TextView android:ellipsize="end" android:maxEms="10"/>
quelle
Sie können die setEllipsize-Methode der TextView-Klasse http://developer.android.com/reference/android/widget/TextView.html#setEllipsize(android.text.TextUtils.TruncateAt) verwenden.
Mit den Konstanten der TextUtil-Klasse für die hinzugefügten Aufhängepunkte http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
quelle
Programmatischer Kotlin.
Schneiden Sie den Anfang des Textes ab:
val maxChars = 10000 if (helloWorldTextView.text.length > maxChars) { helloWorldTextView.text = helloWorldTextView.text.takeLast(maxChars) }
Schneiden Sie das Ende des Textes ab:
val maxChars = 10000 if (helloWorldTextView.text.length > maxChars) { helloWorldTextView.text = helloWorldTextView.text.take(maxChars) }
quelle
Ich teile ein Beispiel, in dem ich maxLength = 1 festgelegt habe, dh es auf eine einzelne Zeile mit dem Attribut maxLines beschränke. Verwenden Sie dann ellipsize = end, um dem Ende einer abgeschnittenen Zeile automatisch ein "..." hinzuzufügen .
Fügen Sie den folgenden Code direkt ein, um dies zu überprüfen.
<TextView android:layout_width="120dp" android:layout_height="wrap_content" android:ellipsize="end" android:maxLines="1" android:maxLength="40" android:text="Can I limit TextView's number of characters?" android:textColor="@color/black" android:textSize="12sp" android:textStyle="bold" />
.
quelle
Wie unter https://stackoverflow.com/a/6165470/1818089 & https://stackoverflow.com/a/6239007/1818089 erwähnt , verwenden Sie
android:minEms="2"
sollte ausreichen, um das oben genannte Ziel zu erreichen.
quelle
Sie können die TextView-Klasse erweitern und die Funktion setText () überschreiben. In dieser Funktion prüfen Sie die Textlänge oder die Wortbreite.
quelle