Wie unterstreiche ich Text in der Textansicht?

Lesezeit: 5 Minuten

Benutzer-Avatar
Nirav Modh

So stellen Sie Text unterstreichen ein textview?

Ich habe folgenden Code verwendet, aber es funktioniert nicht.

tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>").toString());

  • Drei Möglichkeiten zur Lösung dieses Problems stackoverflow.com/questions/2394935/…

    – Zar E. Ahmer

    3. Dezember 2014 um 7:31 Uhr

  • Mögliches Duplikat von Kann ich Text in einem Android-Layout unterstreichen?

    – Daniel Bickler

    14. November 2017 um 17:21 Uhr

  • Dies ist kein Duplikat einer dieser Fragen, da das OP darum bittet, a zu unterstreichen Textübersicht, kein Text selbst. Andernfalls muss sein Fragentitel geändert werden. Mit anderen Worten, auch wenn die Textansicht leer ist, sollte sie immer noch unterstrichen sein. Stellen Sie sich das als Rand nur am unteren Rand vor, aber immer da.

    – Dschungeldev

    30. Oktober 2018 um 15:12 Uhr


Benutzer-Avatar
Kartik Domadiya

Sie müssen verwenden SpannableString dafür :

String mystring=new String("Hello.....");
SpannableString content = new SpannableString(mystring);
content.setSpan(new UnderlineSpan(), 0, mystring.length(), 0);
yourtextview.setText(content);

Update: Sie können meine Antwort auf Underling TextView hier auf alle möglichen Arten beziehen.

  • Ich möchte hier nur eine Anmerkung hinzufügen: Stellen Sie beim Festlegen Ihrer Spanne sicher, dass Sie textAllCaps = true nicht verwendet haben. Es wird nicht funktionieren.

    – Aanal Mehta

    6. Juni 2019 um 14:23 Uhr

  • Vermeiden Sie in den meisten Fällen die Angabe einer einfachen “0”, wenn Flags erwartet werden Spanned.SPAN_EXCLUSIVE_EXCLUSIVE ist der Weg zu gehen.

    – Achraf Amil

    12. August 2020 um 8:23 Uhr

Im Folgenden sind einige Ansätze für unterstrichenen Text in Android aufgeführt:

1. Ansatz

Sie können Ihre Zeichenfolge in definieren strings.xml

<string name="your_string"><u>Underlined text</u></string>

Und verwenden Sie diese Zeichenfolge in Ihrem xml Datei

<TextView
            android:id="@+id/txt_underlined"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/your_string"/>

Oder Sie können diese Zeichenfolge in Ihrer Aktivität/Ihrem Fragment verwenden

txtView.setText(R.string.your_string);

2. Ansatz

Um den Text in TextView zu unterstreichen, können Sie SpannableString verwenden

String text="Underlined Text";
SpannableString content = new SpannableString(text);
content.setSpan(new UnderlineSpan(), 0, text.length(), 0);
txtView.setText(content);

3. Ansatz

Sie können die setPaintFlags-Methode von TextView verwenden, um den Text von TextView zu unterstreichen.

txtView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
txtView.setText("Underlined Text");

4. Ansatz

Gebrauch machen von Html.fromHtml(htmlString);

String htmlString="<u>Underlined Text</u>";
txtView.setText(Html.fromHtml(htmlString));

Oder

txtView.setText(Html.fromHtml("<u>underlined</u> text"));

Notiz:

Wenn Sie diese Zeile hinzugefügt haben android:textAllCaps="true" in Ihrem Layout, dann funktioniert nichts davon. Dazu müssen Sie Ihre Zeichenfolge in Großbuchstaben definieren und dann einen der oben genannten Ansätze.

  • beste und vollständige Antwort auf diese Frage

    – alena_fox_spb

    30. November 2016 um 8:00 Uhr

  • Danke, in meinem Fall habe ich android:textAllCaps=”true” verwendet. Aufgrund dessen funktionierte das Unterstreichen nicht.

    – Sophia

    10. September 2019 um 4:47 Uhr

  • Möglichkeit, die Unterstreichungshöhe zu ändern?

    – Pavel Poley

    11. Juni 2021 um 14:26 Uhr

Benutzer-Avatar
toxa_xa

Benutze das

tvHide.setPaintFlags(tvHide.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);

  • Was ist mit dem Entfernen dieser Unterstreichung?

    – Pratik Butani

    28. März 2014 um 10:11 Uhr

  • Das fühlt sich prägnanter an als die SpannableString-Lösung. Ich frage mich, signalisiert das Setzen dieses Paint-Flags nur, dass das System sich um das SpannableString-Setup kümmern sollte, oder passiert etwas ganz anderes?

    – CarterHudson

    28. März 2016 um 18:00 Uhr

  • Dies funktioniert nicht für TextView mit mehreren Zeilen. Zumindest für mich.

    – Sermilion

    12. Februar 2019 um 21:12 Uhr

  • @PratikButani zum Deaktivieren: tvHide.setPaintFlags(0);

    – Derzu

    19. März 2019 um 2:34 Uhr

Benutzer-Avatar
Hrafn

Android unterstützt die Zeichenfolgenformatierung mit HTML Tags in den Zeichenfolgen xml. Also folgendes würde funktionieren:

<string name="label_testinghtmltags"><u>This text has an underscore</u></string>

Dann verwenden Sie es einfach wie gewohnt. Sie können mehr in der Dokumentation sehen hier

Aktualisieren:

Um die Antwort weiter auszubauen, die Dokumentation sagt:

… das format(String, Object...) und getString(int, Object...) Methoden entfernen alle Stilinformationen aus der Zeichenfolge. . Die Problemumgehung besteht darin, die HTML-Tags mit maskierten Entitäten zu schreiben, die dann mit fromHtml(String) wiederhergestellt werden, nachdem die Formatierung erfolgt ist

Beispielsweise wird die resultierende Zeichenfolge aus dem folgenden Code-Snippet nicht erscheinen als mit unterstrichenen Elementen:

<string name="html_bold_test">This <u>%1$s</u> has an underscore</string>
String result = getString(R.string.html_bold_test, "text")

Allerdings ergibt sich das Ergebnis aus dem folgenden Schnipsel möchten Unterstriche enthalten:

<string name="html_bold_test">This &lt;u> %1$s &lt;/u> has an underscore</string>
String result = Html.fromHtml(getString(R.string.html_bold_test, "text"))

Benutzer-Avatar
mani

Versuche dies,

tv.setPaintFlags(Paint.UNDERLINE_TEXT_FLAG);

Benutzer-Avatar
Viraj Patel

Einfache und einfache Möglichkeit, Unterstreichungen anzuzeigen TextView ist:

yourTextView.getPaint().setUnderlineText(true);

Und wenn Sie die Unterstreichung für diese Ansicht entfernen möchten, können Sie den folgenden Code schreiben:

yourTextView.getPaint().setUnderlineText(false);

Es wird funktionieren, obwohl Sie eingestellt haben android:textAllCaps="true"

Benutzer-Avatar
Brian Haupt

Sie haben es fast geschafft: nur nicht anrufen toString() an Html.fromHtml() und Sie erhalten ein Spanned Object, das die Arbeit erledigt;)

tvHide.setText(Html.fromHtml("<p><u>Hide post</u></p>"));

1130480cookie-checkWie unterstreiche ich Text in der Textansicht?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy