Ich möchte die Unterstreichung unter meinem zeichnen TextView
. Ich habe ein paar Inhalte durchsucht, konnte aber nichts Fruchtbares herausfinden.
Kann mir bitte jemand hier raushelfen?
Ich möchte die Unterstreichung unter meinem zeichnen TextView
. Ich habe ein paar Inhalte durchsucht, konnte aber nichts Fruchtbares herausfinden.
Kann mir bitte jemand hier raushelfen?
Antworten:
Es gibt drei Möglichkeiten, den Text in TextView zu unterzeichnen.
setPaintFlags (); von TextView
Lassen Sie mich Ihnen alle Ansätze erklären:
1. Ansatz
Um den Text in TextView zu unterzeichnen, müssen Sie SpannableString verwenden
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
2. Ansatz
Sie können die setPaintFlags- Methode von TextView verwenden, um den Text von TextView zu unterstreichen.
Zum Beispiel.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Sie können Konstanten der Paint- Klasse referenzieren, wenn Sie durch den Text streichen möchten.
3. Ansatz
Gebrauch machen von Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
ODER
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
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 StrikethroughSpan
Textzeichen verwenden, um den Durchgestrichen-Effekt zu erzielen. :)
Umgeben Sie Ihren Text einfach mit dem <u> -Tag in Ihrer Ressourcendatei string.xml
<string name="your_string"><u>Underlined text</u></string>
und in Ihrer Aktivität / Fragment
mTextView.setText(R.string.your_string);
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 Spannable
mit Unterstrichen Spannweiten, aber wenn Sie verwenden getString()
es wird die konvertieren Spannable
zu String
resultierenden Spannweiten entfernt werden.
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):
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="-10dp"
android:left="-10dp"
android:right="-10dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="2dp"
android:color="#3498db"/>
</shape>
</item>
</layer-list>
Erstellen Sie einen neuen Stil:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Verwenden Sie dann diesen Stil in Ihrer Textansicht:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
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.
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/myTextView"
android:layout_width="20dp"
android:layout_height="wrap_content"/>
<View
android:layout_width="20dp"
android:layout_height="1dp"
android:layout_below="@+id/myTextView"
android:background="#CCCCCC"/>
</RelativeLayout>
Eine einfache und nachhaltige Lösung besteht darin, eine Ebenenliste zu erstellen und als Hintergrund für Ihre Textansicht zu verwenden:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:left="-5dp"
android:right="-5dp"
android:top="-5dp">
<shape>
<stroke
android:width="1.5dp"
android:color="@color/colorAccent" />
</shape>
</item>
</layer-list>
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.
`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>
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
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`