Saya ingin menggambar garis bawah di bawah saya TextView
. Saya telah mencari beberapa konten tetapi tidak dapat menemukan sesuatu yang bermanfaat.
Adakah yang bisa membantu saya di sini?
Saya ingin menggambar garis bawah di bawah saya TextView
. Saya telah mencari beberapa konten tetapi tidak dapat menemukan sesuatu yang bermanfaat.
Adakah yang bisa membantu saya di sini?
Jawaban:
Ada tiga cara untuk mendasari teks di TextView.
setPaintFlags (); dari TextView
Izinkan saya menjelaskan kepada Anda semua pendekatan:
Pendekatan Pertama
Untuk mendasari teks di TextView, Anda harus menggunakan SpannableString
String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);
Pendekatan ke-2
Anda bisa menggunakan metode setPaintFlags dari TextView untuk menggarisbawahi teks TextView.
Misalnya.
mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");
Anda dapat merujuk konstanta kelas Paint jika Anda ingin menyerang melalui teks.
Pendekatan ke-3
Menggunakan Html.fromHtml(htmlString);
String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));
ATAU
txtView.setText(Html.fromHtml("<u>underlined</u> text"));
Html.fromHtml("<u>This text will be underlined</u>")
, tetapi saya harus mengakui bahwa saya adalah penggemar yang jauh lebih besar dalam menggunakan SpannableStrings. @Kartik: Anda mungkin juga menggunakan a StrikethroughSpan
pada teks untuk membuat efek coretan. :)
cukup apit teks Anda dengan tag <u> di file sumber daya string.xml Anda
<string name="your_string"><u>Underlined text</u></string>
dan dalam Aktivitas / Fragmen Anda
mTextView.setText(R.string.your_string);
textView.setText(getString(R.string.text))
<- salah . Benar: textView.setText(getText(R.string.text))
atau hanya textView.setText(R.string.text)
. Alasannya adalah ini yang getText()
mengembalikan Spannable
dengan rentang garis bawah, tetapi jika Anda menggunakannya getString()
akan mengubah Spannable
menjadi String
rentang yang dihasilkan dihapus.
Untuk siapa pun yang masih melihat querstion ini. Ini untuk hyperlink tetapi Anda dapat memodifikasinya hanya untuk garis bawah biasa:
Buat drawable (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>
Buat gaya baru:
<style name="Hyperlink">
<item name="android:textColor">#3498db</item>
<item name="android:background">@drawable/hyperlink_underline</item>
</style>
Kemudian gunakan gaya ini di TextView Anda:
<TextView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
local:MvxBind="Text Id; Click ShowJobInfoCommand"
style="@style/HyperLink"/>
Jika TextView Anda memiliki lebar tetap, solusi alternatifnya adalah membuat Tampilan yang akan terlihat seperti garis bawah dan memposisikannya tepat di bawah TextView Anda.
<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>
Solusi sederhana dan berkelanjutan adalah membuat daftar lapisan dan menjadikannya sebagai latar belakang TextView Anda:
<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 Cara Luar Biasa Untuk Menggarisbawahi TextView Di Android - Kotlin / Java & XML
String html = "<u>Underline using Html.fromHtml()</u>";
textview.setText(Html.fromHtml(html));
Namun Html.fromHtml (Sumber daya string) tidak digunakan lagi di API 24.
Jadi, Anda dapat menggunakan pustaka dukungan android terbaru androidx.core.text.HtmlCompat . Sebelum itu, Anda perlu memasukkan dependensi dalam proyek Anda.
`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));
Menggunakan 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));
menggunakan PaintFlags
textview2.setPaintFlags(textview2.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
textview2.setText("2. Underline using setPaintFlags()");
menggunakan SpannableString
`String content1 = "3.1 Underline using SpannableString";
SpannableString spannableString1 = new SpannableString(content1);
spannableString1.setSpan(new UnderlineSpan(), 0, content1.length(), 0);
textview31.setText(spannableString1);`