20 Stimmen

Textansicht zeigt Teiltext

Ich habe eine TextView, in die ich eine Nachricht laden muss. Die TextView hat maximal 2 Zeilen ( android:lines="2" ). Die Nachricht kann einen ' \n ' Zeichen.

Wie sollte ich die Nachricht in dieser TextView laden, so dass Wörter umbrochen werden und wenn in diesen 2 Zeilen Nachricht nicht passt, am Ende des letzten sichtbaren Wortes muss ich drei Punkte (...) hinzufügen? Wie kann ich die Länge des Textes erkennen, der in die TextView passt?

Mein Code für TextView lautet

<TextView
            a:id="@+id/tv_message"
            a:gravity="top"
            a:layout_width="wrap_content"
            a:layout_height="wrap_content"
            a:layout_alignParentTop="true"
            a:layout_toRightOf="@id/iv_icon"
            a:layout_marginLeft="2dp"
            a:layout_marginTop="4dp"
            a:paddingRight="7dp"
            a:paddingBottom="5dp"
            a:textSize="12sp"
            a:typeface="sans"
            a:ellipsize="marquee"
            a:lines="2"
            a:maxLines="2"
            a:textColor="@android:color/black"
            />

In der Anwendung erscheint der Text jedoch in zwei Zeilen, auch wenn es eine Zeile mit der Unterschrift gibt. Die Meldung lautet wie folgt: "Nachrichtentext" + " \nSignature "aber die Nachricht kann 1, 2 oder 3 Zeilen lang sein, je nach Länge der Nachricht.

0 Stimmen

Warum müssen Sie die Länge des Textes kennen? Sie kann bei verschiedenen Bildschirmgrößen variieren, es sei denn, Sie definieren eine feste Breite für die TextView.

0 Stimmen

Mein Problem ist, dass ich nicht weiß, wie ich 3 Punkte am Ende des letzten sichtbaren Wortes hinzufügen kann. Android:ellipsize="end" und Android:ellipsize="marquee" helfen nicht.... also dachte ich, dass ich nicht den gesamten Text in die Textansicht einfüge, sondern nur den Text, der in die Textansicht passt

0 Stimmen

Können Sie den Code für die TextView posten, die Sie jetzt verwenden? vielleicht gibt es andere Eigenschaften, die verhindern, dass die Ellipsengröße ein zu funktioniert.

0voto

slup Punkte 5374
    String s = "line1 \nline2 \nline3";
    String [] lines = s.split("\n");
    String twolines;
    if (lines.length > 2) {
        twolines = lines[0] + "\n" + lines[1] + "...";
    } else {
        twolines = s;
    }

Dies sollte zum gewünschten Ergebnis führen, verwenden Sie einfach

((TextView)findViewById(R.id.text)).setText(twolines);

0 Stimmen

Es hilft nicht... Wenn ich die Meldung habe: Zeile1 \nline2 \nline3 nach Zeile 2 muss ich 3 Punkte hinzufügen, weil die Nachricht nicht passt

0 Stimmen

Aber die erste Zeile der Nachricht kann lang genug sein, um in 3 Zeilen der Textansicht zu passen, so dass dies nicht hilft

0voto

Nutan S R Punkte 1
<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:autoSizeTextType="uniform" />

Android:autoSizeTextType="uniform" hat es bei mir geschafft. Die Textgröße wird an den verfügbaren Platz angepasst, aber der gesamte Text wird angezeigt.

Siehe diesen Link https://developer.Android.com/develop/ui/views/text-and-emoji/autosizing-textview

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X