Wie kann ich unterstrichenen Text in einer Android-Layoutdatei definieren xml
?
android
android-layout
fonts
Janusz
quelle
quelle
Antworten:
Es kann erreicht werden , wenn Sie eine verwenden String - Ressource XML - Datei, die HTML - Unterstützung für Tags wie
<b></b>
,<i></i>
und<u></u>
.Wenn Sie etwas aus dem Code hervorheben möchten, verwenden Sie:
quelle
<u>
Tags nicht funktioniert, z. B. manchmal, wenn Sie eine benutzerdefinierte Schriftart verwenden. Die programmgesteuerteUnderlineSpan
Basis von hat mich jedoch noch nicht gescheitert, daher würde ich sie als die zuverlässigste Lösung empfehlen.Sie können mit versuchen
quelle
| Paint.ANTI_ALIAS_FLAG
da sonst der Text sehr scharf aussieht. Dies manifestiert sich häufig in niedrigeren APIs.textView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
Die obige "akzeptierte" Antwort funktioniert NICHT (wenn Sie versuchen, die Zeichenfolge wie zu verwenden
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.Wie in den Dokumentationen angegeben , müssen Sie die öffnende Klammer der inneren Tags mit (HTML-Entity-codiert) maskieren
<
, z. B. sollte das Ergebnis wie folgt aussehen:Dann können Sie in Ihrem Code den Text einstellen mit:
quelle
Inhalt der Datei Strings.xml:
Die XML-Layoutdatei sollte die obige Zeichenfolgenressource mit den folgenden Eigenschaften der Textansicht verwenden, wie unten gezeigt:
quelle
Für Button und TextView ist dies der einfachste Weg:
Taste:
Textübersicht:
quelle
Einzeilige Lösung
myTextView.setText(Html.fromHtml("<p><u>I am Underlined text</u></p>"));
Es ist etwas spät, könnte aber für jemanden nützlich sein.
quelle
In Kotlin kann die Erweiterungsfunktion verwendet werden. Dies kann nur aus Code verwendet werden, nicht aus XML.
Verwendungszweck:
quelle
Schauen Sie sich den unterstrichenen anklickbaren Schaltflächenstil an:
string.xml:
Ergebnis:
quelle
Der neueste Ansatz zum Zeichnen von unterstrichenem Text wird von Romain Guy auf Medium mit verfügbarem Quellcode auf GitHub beschrieben . Diese Beispielanwendung zeigt zwei mögliche Implementierungen:
quelle
Ich weiß, dass dies eine späte Antwort ist, aber ich habe eine Lösung gefunden, die ziemlich gut funktioniert ... Ich habe die Antwort von Anthony Forloney zum Unterstreichen von Text im Code übernommen und eine Unterklasse von TextView erstellt, die dies für Sie erledigt. Dann können Sie die Unterklasse einfach in XML verwenden, wenn Sie eine unterstrichene Textansicht wünschen.
Hier ist die Klasse, die ich erstellt habe:
Jetzt ... wann immer Sie eine unterstrichene Textansicht in XML erstellen möchten, gehen Sie einfach wie folgt vor:
Ich habe diesem XML-Snippet zusätzliche Optionen hinzugefügt, um zu zeigen, dass mein Beispiel mit dem Ändern der Textfarbe, -größe und -art funktioniert ...
Hoffe das hilft!
quelle
Ein sauberer Weg anstelle der
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
Methode ist die VerwendungtextView.getPaint().setUnderlineText(true);
Und wenn Sie später die Unterstreichung für diese Ansicht deaktivieren müssen, z. B. in einer wiederverwendeten Ansicht in einer RecyclerView,
textView.getPaint().setUnderlineText(false);
quelle
Verwenden Sie einfach das Attribut in der String-Ressourcendatei, z
quelle
Ich habe dieses XML-Zeichen verwendet, um einen unteren Rand zu erstellen, und das Zeichen als Hintergrund auf meine Textansicht angewendet
quelle
Eine einfache und flexible Lösung in XML:
quelle
Eine andere Lösung besteht darin, eine benutzerdefinierte Ansicht zu erstellen, die TextView wie unten gezeigt erweitert
und füge es einfach wie unten gezeigt zu xml hinzu
quelle
Ich habe Samuels Antwort vereinfacht :
quelle
Ich habe diese Methode zur Vereinfachung erstellt
Unterstreichen Sie die gesamte Textansicht
Unterstreichen Sie einen Teil von TextView
Überprüfen Sie meine Antwort hier, um anklickbaren Text zu unterstreichen oder mehrere Teile von TextView zu unterstreichen
quelle
Versuchen Sie diesen Code
in XML
in Code
Viel Glück!
quelle
Darüber hinaus gibt der folgende Code die Unterstreichung nicht aus:
Verwenden Sie stattdessen den folgenden Code, um das Rich-Text-Format beizubehalten:
"Sie können entweder getString (int) oder getText (int) verwenden, um eine Zeichenfolge abzurufen. GetText (int) behält alle auf die Zeichenfolge angewendeten Rich-Text-Stile bei." Android-Dokumentation.
Weitere Informationen finden Sie in der Dokumentation: https://developer.android.com/guide/topics/resources/string-resource.html
Ich hoffe das hilft.
quelle
Die am besten gewählte Antwort ist richtig und am einfachsten. Manchmal kann es jedoch vorkommen, dass dies nicht für einige Schriftarten funktioniert, sondern für andere. (Auf welches Problem bin ich gerade beim Umgang mit Chinesisch gestoßen.)
Die Lösung besteht darin, "WRAP_CONTENT" nicht nur für Ihre Textansicht zu verwenden, da kein zusätzlicher Platz zum Zeichnen der Linie vorhanden ist. Sie können eine feste Höhe für Ihre Textansicht festlegen oder android: paddingVertical mit WRAP_CONTENT verwenden.
quelle
Beachten Sie das Escape-Symbol in der XML-Datei
quelle
Um das in Kotlin zu tun:
yourTextView.paint?.isUnderlineText = true
quelle
Es ist ziemlich spät, dies zu beantworten, aber wenn jemand den Text dynamisch abrufen möchte, kann er diese einfache einzeilige Zeile in seinem Java-Code verwenden, die funktioniert:
quelle
Ich hatte ein Problem, bei dem ich eine benutzerdefinierte Schriftart verwende und die mit dem Trick der Ressourcendatei (
<u>Underlined text</u>
) erstellte Unterstreichung funktioniert hat, aber Android hat es geschafft, die Unterstreichung in eine Art Streik-Trog umzuwandeln.Ich habe diese Antwort verwendet, um selbst einen Rahmen unter der Textansicht zu zeichnen: https://stackoverflow.com/a/10732993/664449 . Offensichtlich funktioniert dies nicht für teilweise unterstrichenen Text oder mehrzeiligen Text.
quelle