813 Stimmen

Kann ich Text in einem Android-Layout unterstreichen?

Wie kann ich definieren unterstrichen Text in einem Android-Layout xml Datei?

4voto

Darush Punkte 10393

I vereinfacht Samuel die Antwort:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!--https://stackoverflow.com/a/40706098/4726718-->
    <item
        android:left="-5dp"
        android:right="-5dp"
        android:top="-5dp">
        <shape>
            <stroke
                android:width="1.5dp"
                android:color="@color/colorAccent" />
        </shape>
    </item>
</layer-list>

4voto

Andrew.J Punkte 59

Versuchen Sie diesen Code

in XML

<resource>
 <string name="my_text"><![CDATA[This is an <u>underline</u>]]></string> 
</resources> 

unter Code

TextView textView = (TextView) view.findViewById(R.id.textview);
textView.setText(Html.fromHtml(getString(R.string.my_text)));

Viel Glück!

2voto

Ray Lee Punkte 51

Die am häufigsten gewählte Antwort ist richtig und am einfachsten. Allerdings kann es vorkommen, dass dies bei einigen Schriftarten nicht funktioniert, bei anderen aber schon (auf dieses Problem bin ich gerade beim Umgang mit Chinesisch gestoßen).

Die Lösung ist, "WRAP_CONTENT" nicht nur für die TextView zu verwenden, da es keinen zusätzlichen Platz für das Zeichnen der Linie gibt. Sie können eine feste Höhe für Ihre TextView festlegen, oder Android:paddingVertical mit WRAP_CONTENT verwenden.

2voto

Fahmi Eshaq Punkte 153
  1. Gehen Sie zur Ressourcendatei strings.xml
  2. Fügen Sie eine Zeichenfolge in die Ressourcendatei ein, gegebenenfalls mit einem HTML-Unterstreichungs-Tag.

strings.xml HTML-Unterstreichungsbeispiel

  1. Rufen Sie den String resource ID in Ihrem Java-Code wie folgt auf:
sampleTextView.setText(R.string.sample_string);
  1. In der Ausgabe sollte das Wort "Stackoverflow" unterstrichen sein.

Außerdem wird der folgende Code die Unterstreichung nicht drucken:

String sampleString = getString(R.string.sample_string);
sampleTextView.setText(sampleString);

Verwenden Sie stattdessen den folgenden Code, um das Rich-Text-Format beizubehalten:

CharSequence sampleString = getText(R.string.sample_string);
sampleTextView.setText(sampleString);

"Sie können entweder getString(int) oder getText(int) verwenden, um eine Zeichenkette abzurufen. getText(int) behält alle auf die Zeichenkette angewendeten Rich-Text-Stylings bei." Android-Dokumentation.

Siehe dazu die Dokumentation: https://developer.Android.com/guide/topics/resources/string-resource.html

Ich hoffe, das hilft.

1voto

lynn8570 Punkte 1665
HtmlCompat.fromHtml(
                    String.format(context.getString(R.string.set_target_with_underline)),
                    HtmlCompat.FROM_HTML_MODE_LEGACY)
<string name="set_target_with_underline">&lt;u>Set Target&lt;u> </string>

Beachten Sie das Escape-Symbol in der xml-Datei

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