Bagaimana saya bisa mendefinisikan teks yang digarisbawahi dalam xml
file tata letak Android ?
android
android-layout
fonts
Janusz
sumber
sumber
Jawaban:
Ini dapat dicapai jika Anda menggunakan file xml sumber daya string , yang mendukung tag HTML seperti
<b></b>
,<i></i>
dan<u></u>
.Jika Anda ingin menggarisbawahi sesuatu dari penggunaan kode:
sumber
<u>
tag tidak bekerja, misalnya kadang-kadang jika Anda menggunakan font khusus. Namun, yang mendasari pemrograman olehUnderlineSpan
belum gagal pada saya, jadi saya akan merekomendasikan itu sebagai solusi yang paling dapat diandalkan.Anda bisa mencobanya
sumber
| Paint.ANTI_ALIAS_FLAG
juga atau teks Anda akan terlihat sangat tajam. Ini bermanifestasi dalam API yang lebih rendah lebih sering daripada tidak.textView.paintFlags = textView.paintFlags or Paint.UNDERLINE_TEXT_FLAG
Jawaban "diterima" di atas TIDAK berfungsi (ketika Anda mencoba menggunakan string seperti
textView.setText(Html.fromHtml(String.format(getString(...), ...)))
.Seperti yang dinyatakan dalam dokumentasi Anda harus melarikan diri (html entitas dikodekan) dengan membuka braket tag batin
<
, misalnya hasilnya akan terlihat seperti:Kemudian dalam kode Anda, Anda dapat mengatur teks dengan:
sumber
Konten file Strings.xml:
Layout xml file shold menggunakan sumber daya string di atas dengan properti textview di bawah ini, seperti yang ditunjukkan di bawah ini:
sumber
Untuk Button dan TextView ini adalah cara termudah:
Tombol:
Textview:
sumber
Solusi satu baris
myTextView.setText(Html.fromHtml("<p><u>I am Underlined text</u></p>"));
Agak terlambat tetapi bisa bermanfaat bagi seseorang.
sumber
Dalam fungsi ekstensi Kotlin dapat digunakan. Ini hanya dapat digunakan dari kode, bukan xml.
Pemakaian:
sumber
lihat gaya tombol yang dapat diklik bergaris bawah:
strings.xml:
Hasil:
sumber
Pendekatan terbaru menggambar teks yang digarisbawahi dijelaskan oleh Romain Guy di media dengan kode sumber yang tersedia di GitHub . Aplikasi sampel ini memperlihatkan dua kemungkinan implementasi:
sumber
Saya tahu ini adalah jawaban yang terlambat, tetapi saya datang dengan solusi yang bekerja cukup baik ... Saya mengambil jawaban dari Anthony Forloney untuk menggarisbawahi teks dalam kode dan membuat subkelas dari TextView yang menangani itu untuk Anda. Kemudian Anda bisa menggunakan subkelas dalam XML kapan pun Anda ingin memiliki TextView yang digarisbawahi.
Inilah kelas yang saya buat:
Sekarang ... setiap kali Anda ingin membuat tampilan teks yang digarisbawahi dalam XML, Anda cukup melakukan hal berikut:
Saya telah menambahkan opsi tambahan dalam cuplikan XML ini untuk menunjukkan bahwa contoh saya berfungsi dengan mengubah warna teks, ukuran, dan gaya ...
Semoga ini membantu!
sumber
Cara yang lebih bersih daripada
textView.setPaintFlags(textView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
metode ini adalah dengan menggunakantextView.getPaint().setUnderlineText(true);
Dan jika Anda perlu mematikan garis bawah untuk tampilan itu, seperti dalam tampilan yang digunakan kembali dalam RecyclerView,
textView.getPaint().setUnderlineText(false);
sumber
Cukup gunakan atribut dalam file sumber string misalnya
sumber
Saya menggunakan xml drawable ini untuk membuat batas bawah dan menerapkan drawable sebagai latar belakang ke tampilan teks saya
sumber
Solusi sederhana dan fleksibel dalam xml:
sumber
solusi lain adalah membuat tampilan kustom yang memperluas TextView seperti yang ditunjukkan di bawah ini
dan tambahkan saja ke xml seperti yang ditunjukkan di bawah ini
sumber
Saya menyederhanakan jawaban Samuel :
sumber
Saya membuat metode ini untuk memudahkan
Garisbawahi seluruh TextView
Garisbawahi beberapa bagian dari TextView
periksa jawaban saya di sini untuk membuat teks garis bawah yang dapat diklik atau menggarisbawahi beberapa bagian dari TextView
sumber
coba kode ini
dalam XML
dalam kode
Semoga berhasil!
sumber
Selanjutnya, kode berikut tidak akan mencetak garis bawah:
Alih-alih, gunakan kode berikut untuk mempertahankan format teks kaya:
"Anda dapat menggunakan getString (int) atau getText (int) untuk mengambil string. GetText (int) mempertahankan gaya teks kaya apa pun yang diterapkan pada string." Dokumentasi Android.
Lihat dokumentasi: https://developer.android.com/guide/topics/resources/string-resource.html
Saya harap ini membantu.
sumber
Jawaban terpilih teratas adalah benar dan paling sederhana. Namun, kadang-kadang Anda mungkin menemukan itu tidak berfungsi untuk beberapa font, tetapi bekerja untuk orang lain. (Masalah yang baru saja saya temui ketika berhadapan dengan bahasa Cina.)
Solusi adalah jangan gunakan "WRAP_CONTENT" hanya untuk TextView Anda, karena tidak ada ruang tambahan untuk menggambar garis. Anda dapat mengatur ketinggian tetap ke TextView Anda, atau menggunakan android: paddingVertical dengan WRAP_CONTENT.
sumber
Perhatikan simbol Escape dalam file xml
sumber
Untuk melakukannya di Kotlin:
yourTextView.paint?.isUnderlineText = true
sumber
Cukup terlambat untuk menjawab ini, tetapi anggaplah jika seseorang ingin mendapatkan teks secara dinamis maka mereka dapat menggunakan satu baris sederhana ini dalam kode java mereka yang berfungsi:
sumber
Saya punya masalah ketika saya menggunakan font khusus dan garis bawah yang dibuat dengan trik file sumber daya (
<u>Underlined text</u>
) berhasil tetapi Android berhasil mengubah garis bawah menjadi semacam palung pemogokan.Saya menggunakan jawaban ini untuk menggambar perbatasan di bawah tampilan teks sendiri: https://stackoverflow.com/a/10732993/664449 . Jelas ini tidak berfungsi untuk sebagian teks yang digarisbawahi atau teks banyak sisi.
sumber