Ich habe einen TextView
, den ich die Zeichen begrenzen möchte. Eigentlich kann ich das machen, aber ich suche nach drei Punkten (...) am Ende der Zeichenkette. Dieses zeigt, dass der Text weitergeht. Dies ist mein XML, aber es gibt keine Punkte, obwohl es meinen Text einschränkt.
<TextView
Android:id = "@+id/tvFixture"
Android:layout_width = "wrap_content"
Android:layout_height = "wrap_content"
Android:layout_toLeftOf = "@id/ivFixture_Guest"
Android:text = "@string/test_06"
Android:lines = "1"
Android:ems = "3"
Android:gravity = "right"
style = "@style/simpletopic.black"
Android:ellipsize="end"/>
Veraltet:
Fügen Sie in Ihrer Textansicht eine weitere Eigenschaft Android:singleLine="true"
hinzu
Aktualisierte:
Android:ellipsize="end"
Android:maxLines="1"
Das Folgende ist, was ich gelernt habe, indem ich mit verschiedenen Optionen herumgespielt habe, um eine TextView
in eine einzelne Zeile (mit und ohne die drei Punkte) zu zwingen.
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:text="one two three four five six seven eight nine ten" />
Dies zwingt den Text nur zu einer Zeile. Zusätzlicher Text wird ausgeblendet.
Verbunden:
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:ellipsize="end"
Android:text="one two three four five six seven eight nine ten" />
Dadurch wird der nicht passende Text abgeschnitten, der Benutzer wird jedoch durch das Hinzufügen einer Ellipse (der drei Punkte) darauf hingewiesen, dass der Text abgeschnitten wurde.
Verbunden:
<TextView
Android:id="@+id/MarqueeText"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:singleLine="true"
Android:ellipsize="Marquee"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:text="one two three four five six seven eight nine ten" />
Dadurch wird der Text automatisch über die Textansicht gescrollt. Beachten Sie, dass manchmal im Code gesetzt werden muss:
textView.setSelected(true);
Angeblich sollten Android:maxLines="1"
und Android:singleLine="true"
im Grunde dasselbe tun, und da singleLine anscheinend veraltet ist , würde ich es vorziehen, es nicht zu verwenden, aber wenn ich es herausnehme, scrollt das Marquee nicht mehr. Das Herausnehmen von maxLines
wirkt sich jedoch nicht darauf aus.
Verbunden:
<HorizontalScrollView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:id="@+id/horizontalScrollView">
<TextView
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:text="one two three four five six seven eight nine ten" />
</HorizontalScrollView>
Dadurch kann der Benutzer manuell scrollen, um die gesamte Textzeile anzuzeigen.
Versuchen Sie diese Eigenschaft von TextView in Ihrer Layoutdatei.
Android:ellipsize="end"
Android:maxLines="1"
Ich nehme an, Sie möchten die Breite auf eine Zeile beschränken und nicht auf Zeichen beschränken? Da singleLine
veraltet ist, können Sie Folgendes gemeinsam verwenden:
Android:maxLines="1"
Android:scrollHorizontally="true"
Android:ellipsize="end"
z.B. Sie können verwenden
Android:maxLength="13"
dies beschränkt die Texexlänge auf 13, aber das Problem ist, wenn Sie versuchen, 3 Punkte hinzuzufügen (...). Diese wird nicht angezeigt, da sie Teil der Textviewlänge ist.
String userName;
if (data.length() >= 13) {
userName = data.substring(0, 13)+ "...";
} else {
userName = data;
}
textView.setText(userName);
abgesehen davon müssen Sie verwenden
Android:maxLines="1"
Ich habe das gewünschte Ergebnis erhalten mit
Android:maxLines="2"
Android:minLines="2"
Android:ellipsize="end"
Der Trick besteht darin, maxLines und minLines auf den gleichen Wert zu setzen ... und nicht nur Android: lines = "2". Außerdem vermeiden Sie veraltete Attribute.
code:
TextView your_text_view = (TextView) findViewById(R.id.your_id_textview);
your_text_view.setEllipsize(TextUtils.TruncateAt.END);
xml:
Android:maxLines = "5"
z.B.
In Matthäus 13 fragten die Jünger Jesus, warum er in Gleichnissen zu den Menschenmengen sprach. Er antwortete: "Es ist euch gegeben worden, die Geheimnisse des Himmelreiches zu kennen, aber es ist ihnen nicht gegeben worden.
Ergebnis: ... In Matthäus 13 fragten die Jünger Jesus, warum er in Gleichnissen zu den Menschenmengen sprach. Er antwortete: "Es wurde dir gegeben zu wissen ...
Ich verwende Horizonal Recyclerview.
1) Hier in Textansicht wird TextView bei Verwendung vertikal verzerrt
Android:ellipsize="end"
Android:maxLines="1"
Überprüfen Sie die mutigen TextViews Wyman Group, Jaskolski ...
2) Aber wenn ich singleLine zusammen mit Ellipsize verwendet habe -
Android:ellipsize="end"
Android:singleLine="true"
Überprüfen Sie die mutigen TextViews Wyman Group, Jaskolski ...
Die zweite Lösung hat bei mir richtig funktioniert (mit singleLine). Ich habe auch in der Betriebssystemversion getestet: 4.1 und höher (bis 8.0), es funktioniert einwandfrei ohne Abstürze.
Sie können die Anzahl der Zeichen Ihrer Textansicht begrenzen und nach dem Text hinzufügen (...). Angenommen, Sie müssen nur 5 Buchstaben anzeigen, und anschließend müssen Sie (...) anzeigen. Führen Sie einfach folgende Schritte aus:
String YourString = "abcdefghijk";
if(YourString.length()>5){
YourString = YourString.substring(0,4)+"...";
your_text_view.setText(YourString);
}else{
your_text_view.setText(YourString); //Dont do any change
}
ein kleiner hack ^ _ ^. Obwohl es keine gute Lösung ist. Aber eine Arbeit, die für mich gearbeitet hat: D
EDIT: Ich habe den Check auf weniger Zeichen gemäß Ihrer beschränkten Nr. Hinzugefügt. von Zeichen.
Um mit dem Attribut Android: ellipsize arbeiten zu können, müssen Sie die Layoutbreite des TextView so einschränken, dass das text außerhalb der TextView-Ansicht liegt .
Also, Android: layout_width Attribut spielt hier eine Schlüsselrolle, setzt es entsprechend.
Ein Beispiel kann sein:
<TextView
Android:layout_width="120dp"
Android:layout_height="wrap_content"
Android:ellipsize="end"
Android:text="This is a very long text to be displayed"
Android:textSize="12sp"
Android:maxLines="1"
/>
Wenn hier text in Android: text = "Dies ist ein sehr langer Text, der angezeigt werden soll" geht aus TextView mit einem Android aus: layout_width = "120dp" , Android: ellipsize = "end" schneidet den text ab und platziert ... (3 Punkte) danach. d.h.Dies ist sehr lang ...wird in der Textansicht angezeigt.
Sie müssen für die Textansicht folgende Zeilen in Ihr Layout einfügen
Android:maxLines="1"
Android:ellipsize="end"
Android:singleLine="true"
Hoffe, das funktioniert für dich.
Ich denke, Sie geben fixe Höhe und Breite der Textansicht an. Dann funktioniert Ihre Lösung.
sie können diese Zeile in XML schreiben, wobei Sie die Variable textview
verwenden:
Android:singleLine="true"
Der Ansatz von @AzharShaikh funktioniert gut.
Android:ellipsize="end"
Android:maxLines="1"
Ich erkenne jedoch ein Problem, dass TextView von Word abgeschnitten wird (standardmäßig). Zeigen Sie, ob wir einen Text haben wie:
test long_line_without_any_space_abcdefgh
die TextView zeigt an:
Prüfung...
Ich habe eine Lösung gefunden, um dieses Problem zu lösen, Leerzeichen durch das Unicode-Leerzeichen mit Leerzeichen zu ersetzen. TextView bewirkt, dass Zeichen anstelle von Wörtern umbrochen werden:
yourString.replace(" ", "\u00A0");
Das Ergebnis:
test long_line_without_any_space_abc ...
<TextView
Android:id="@+id/product_description"
Android:layout_width="165dp"
Android:layout_height="wrap_content"
Android:layout_marginTop="2dp"
Android:paddingLeft="12dp"
Android:paddingRight="12dp"
Android:text="Pack of 4 summer printed pajama"
Android:textColor="#d2131c"
Android:textSize="12sp"
Android:maxLines="2"
Android:ellipsize="end"/>
Fügen Sie diese beiden Zeilen in Ihren Text ein
Android:ellipsize="end"
Android:singleLine="true"
sie können das durch xml
tun:
<TextView
Android:id="@+id/textview"
Android:maxLines="1" // or any number of lines you want
Android:ellipsize="end"
/>
Benutzen
Android:singleLine="true"
Android:maxLines="1"
app:layout_constrainedWidth="true"
So sieht meine volle TextView
aus:
<TextView
Android:id="@+id/message_title"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_marginStart="5dp"
Android:maxLines="1"
Android:singleLine="true"
Android:text="NAME PLACEHOLDER MORE Text"
Android:textColor="@Android:color/black"
Android:textSize="16sp"
Android:textStyle="bold"
app:layout_constrainedWidth="true"
app:layout_constraintEnd_toStartOf="@id/message_check_sign"
app:layout_constraintHorizontal_bias="0"
app:layout_constraintStart_toEndOf="@id/img_chat_contact"
app:layout_constraintTop_toTopOf="@id/img_chat_contact" />
Sie ändern sich einfach
Android: layout_width = "wrap_content"
verwenden Sie diese unter der Zeile
Android: layout_width = "match_parent"
<LinearLayout
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerVertical="true"
Android:layout_marginLeft="10dp"
Android:layout_marginTop="10dp"
Android:layout_toRightOf="@+id/visitBox"
Android:orientation="vertical" >
<TextView
Android:id="@+id/txvrequestTitle"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:singleLine="true"
Android:text="Abcdefghighiklmnon"
Android:textAppearance="?android:attr/textAppearanceLarge"
Android:textColor="@color/orange_color" />
</LinearLayout>