Freut mich das zu hören. Markieren Sie diese Frage als gelöst, damit andere Benutzer darauf verweisen können.
Kartik Domadiya
4
Ein dritter Ansatz wäre die Verwendung Html.fromHtml("<u>This text will be underlined</u>"), aber ich muss zugeben, dass ich ein viel größerer Fan von SpannableStrings bin. @Kartik: Sie können auch ein StrikethroughSpanTextzeichen verwenden, um den Durchgestrichen-Effekt zu erzielen. :)
MH.
Ich liebe den 3. Ansatz. Kurz, einfach und prägnant und fügt meinem Programm nur eine zusätzliche Codezeile hinzu.
Matt
Ich weiß, dass dies ein bisschen alt ist, aber gibt es eine Möglichkeit, die Dicke der Unterstreichung einzustellen?
Andreas Wong
Welche davon wird für den Inhalt von priorityActivity in der Kategorie PreferenceCategory verwendet?
Android-Entwickler
40
Umgeben Sie Ihren Text einfach mit dem <u> -Tag in Ihrer Ressourcendatei string.xml
@CHAKRAVARTHI Es funktioniert nicht, wenn Sie den Text vor dem Festlegen in einen String umwandeln. ZB textView.setText(getString(R.string.text))<- falsch . Richtig:textView.setText(getText(R.string.text)) oder einfach textView.setText(R.string.text). Der Grund beind dies , dass getText()Renditen Spannablemit Unterstrichen Spannweiten, aber wenn Sie verwenden getString()es wird die konvertieren Spannablezu Stringresultierenden Spannweiten entfernt werden.
Jaroslaw Mytkalyk
guter Punkt! Ich habe meine aktuelle Antwort bearbeitet, um klarer zu sein
Wenn Ihre TextView eine feste Breite hat, kann eine alternative Lösung darin bestehen, eine Ansicht zu erstellen, die wie eine Unterstreichung aussieht, und sie direkt unter Ihrer TextView zu positionieren.
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Aber Html.fromHtml (String Ressource) wurde in API 24 als veraltet.
So können Sie die neueste Android-Support-Bibliothek androidx.core.text.HtmlCompat verwenden . Zuvor müssen Sie die Abhängigkeit in Ihr Projekt aufnehmen.
`implementation 'androidx.core:core:1.0.1'`
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>";
//underline textview using HtmlCompat.fromHtml() method
textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
Verwenden von strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
Antworten:
Es gibt drei Möglichkeiten, den Text in TextView zu unterzeichnen.
SpannableString
setPaintFlags (); von TextView
Html.fromHtml ();
Lassen Sie mich Ihnen alle Ansätze erklären:
1. Ansatz
Um den Text in TextView zu unterzeichnen, müssen Sie SpannableString verwenden
2. Ansatz
Sie können die setPaintFlags- Methode von TextView verwenden, um den Text von TextView zu unterstreichen.
Zum Beispiel.
Sie können Konstanten der Paint- Klasse referenzieren, wenn Sie durch den Text streichen möchten.
3. Ansatz
Gebrauch machen von
Html.fromHtml(htmlString);
ODER
quelle
Html.fromHtml("<u>This text will be underlined</u>")
, aber ich muss zugeben, dass ich ein viel größerer Fan von SpannableStrings bin. @Kartik: Sie können auch einStrikethroughSpan
Textzeichen verwenden, um den Durchgestrichen-Effekt zu erzielen. :)Umgeben Sie Ihren Text einfach mit dem <u> -Tag in Ihrer Ressourcendatei string.xml
und in Ihrer Aktivität / Fragment
quelle
textView.setText(getString(R.string.text))
<- falsch . Richtig:textView.setText(getText(R.string.text))
oder einfachtextView.setText(R.string.text)
. Der Grund beind dies , dassgetText()
RenditenSpannable
mit Unterstrichen Spannweiten, aber wenn Sie verwendengetString()
es wird die konvertierenSpannable
zuString
resultierenden Spannweiten entfernt werden.Es funktioniert für mich.
quelle
Für alle, die sich diese Frage noch ansehen. Dies ist für einen Hyperlink, aber Sie können ihn nur für eine einfache Unterstreichung ändern:
Erstellen Sie eine Zeichnungsdatei (hyperlink_underline.xml):
Erstellen Sie einen neuen Stil:
Verwenden Sie dann diesen Stil in Ihrer Textansicht:
quelle
Wenn Ihre TextView eine feste Breite hat, kann eine alternative Lösung darin bestehen, eine Ansicht zu erstellen, die wie eine Unterstreichung aussieht, und sie direkt unter Ihrer TextView zu positionieren.
quelle
Eine einfache und nachhaltige Lösung besteht darin, eine Ebenenliste zu erstellen und als Hintergrund für Ihre Textansicht zu verwenden:
quelle
5 erstaunliche Möglichkeiten, eine Textansicht in Android - Kotlin / Java & XML zu unterstreichen
String html = "<u>Underline using Html.fromHtml()</u>"; textview.setText(Html.fromHtml(html));
Aber Html.fromHtml (String Ressource) wurde in API 24 als veraltet.
So können Sie die neueste Android-Support-Bibliothek androidx.core.text.HtmlCompat verwenden . Zuvor müssen Sie die Abhängigkeit in Ihr Projekt aufnehmen.
String html = "<u> 1.1 Underline using HtmlCompat.fromHtml()</u>"; //underline textview using HtmlCompat.fromHtml() method textview11.setText(HtmlCompat.fromHtml(html, HtmlCompat.FROM_HTML_MODE_LEGACY));
Verwenden von strings.xml ,
<string name="underline_text">1.3 <u>Underline using HtmlCompat.fromHtml() and string resource</u></string>
textview13.setText(HtmlCompat.fromHtml(getString(R.string.underline_text), HtmlCompat.FROM_HTML_MODE_LEGACY));
mit PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG); textview2.setText("2. Underline using setPaintFlags()");
mit SpannableString
quelle