Voglio disegnare la sottolineatura sotto il mio TextView. Ho cercato alcuni contenuti ma non sono riuscito a trovare nulla di fruttuoso.
Qualcuno può aiutarmi qui?
Voglio disegnare la sottolineatura sotto il mio TextView. Ho cercato alcuni contenuti ma non sono riuscito a trovare nulla di fruttuoso.
Qualcuno può aiutarmi qui?
Risposte:
Esistono tre modi per sottolineare il testo in TextView.
setPaintFlags (); di TextView
Lascia che ti spieghi tutti gli approcci:
1 ° approccio
Per sottolineare il testo in TextView devi usare SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
2 ° approccio
È possibile utilizzare il metodo setPaintFlags di TextView per sottolineare il testo di TextView.
Per es.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Puoi fare riferimento alle costanti della classe Paint se vuoi battere il testo.
3 ° approccio
Utilizzare Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
O
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>"), ma devo ammettere che sono un fan molto più grande dell'utilizzo di SpannableStrings. @ Kartik: Potresti anche usare un StrikethroughSpansul testo per creare l'effetto barrato. :)
racchiudi il tuo testo con il tag <u> nel tuo file di risorse string.xml
<string name="your_string"><u>Underlined text</u></string>
e nella tua attività / frammento
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text)) <- sbagliato . Giusto: textView.setText(getText(R.string.text)) o solo textView.setText(R.string.text). La ragione per questo beind che getText()torna Spannablecon campate di sottolineatura, ma se si utilizza getString()lo convertirà la Spannablea Stringcampate risultanti in corso di rimozione.
Per chiunque stia ancora guardando questa domanda. Questo è per un collegamento ipertestuale ma puoi modificarlo solo per una semplice sottolineatura:
Crea un disegnabile (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>
Crea un nuovo stile:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Quindi usa questo stile sul tuo TextView:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
Se il tuo TextView ha una larghezza fissa, una soluzione alternativa può essere quella di creare una vista che assomigli a una sottolineatura e posizionarlo proprio sotto il tuo TextView.
<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>
Una soluzione semplice e sostenibile è creare un elenco di livelli e impostarlo come sfondo del tuo TextView:
<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 modi sorprendenti per sottolineare una visualizzazione di testo in Android - Kotlin / Java e XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));Ma Html.fromHtml (risorsa stringa) è stato deprecato nell'API 24.
Quindi puoi utilizzare l'ultima libreria di supporto Android androidx.core.text.HtmlCompat . Prima di ciò, devi includere la dipendenza nel tuo progetto.
`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));Utilizzando 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));
utilizzando PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");utilizzando SpannableString
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`