Saya tidak tahu cara membuat teks tertentu di TextView menjadi BOLD.
seperti ini
txtResult.setText(id+" "+name);
Saya ingin hasilnya seperti ini:
1111 neil
id
dan name
adalah variabel yang telah saya ambil nilainya dari database, dan saya ingin membuatnya id
menjadi tebal, tetapi hanya id
supaya name
tidak akan terpengaruh, saya tidak tahu bagaimana melakukan ini.
android
textview
android-textattributes
Budi Darmawan
sumber
sumber
Jawaban:
Cukup buat String Anda dalam HTML dan atur:
sumber
Html.fromHtml()
sekarang sudah tidak digunakan lagiMeskipun Anda dapat menggunakan Html.fromHtml () Anda dapat menggunakan pendekatan yang lebih asli yaitu SpannableStringBuilder , posting ini mungkin helful.
sumber
Pertama: Anda tidak perlu khawatir menggunakan kode kinerja lambat dari jawaban Raghav Sood .
Kedua: Anda tidak perlu menulis fungsi ekstensi yang disediakan oleh jawaban w3bshark saat menggunakan Kotlin.
Finnaly: Yang perlu Anda lakukan adalah menggunakan perpustakaan android-ktx Kotlin dari Google (lihat di sini untuk menemukan informasi lebih lanjut dan cara memasukkannya ke proyek Anda):
MEMPERBARUI:
Karena saya pikir itu dapat membantu orang lain serta menunjukkan seberapa jauh Anda bisa pergi ke sini lebih banyak menggunakan kasus.
Saat Anda perlu menampilkan teks dengan beberapa bagian berwarna biru dan miring:
Saat Anda perlu menampilkan teks dalam huruf tebal dan miring:
Singkatnya,
bold
,append
,color
danitalic
adalah fungsi ekstensi untukSpannableStringBuilder
. Anda dapat melihat fungsi ekstensi lain dalam dokumentasi resmi , dari tempat Anda dapat memikirkan kemungkinan lain.sumber
Saya pikir jawaban yang dipilih tidak memberikan hasil yang memuaskan. Saya telah menulis fungsi saya sendiri yang membutuhkan 2 string; Teks lengkap dan bagian teks yang ingin Anda cetak tebal.
Ini mengembalikan SpannableStringBuilder dengan 'textToBold' dari 'text' bolded.
Saya menemukan kemampuan untuk membuat substring tebal tanpa membungkusnya dengan tag yang bermanfaat.
sumber
Seperti kata wtsang02, menggunakan HTML adalah biaya overhead yang mahal. Cukup gunakan solusi asli. Jika Anda tidak perlu memodifikasi string, cukup gunakan SpannableString, bukan SpannableStringBuilder.
sumber
Jika Anda ingin menggunakan string dari XML, Anda dapat melakukan sesuatu seperti ini:
strings.xml (bagian "CDATA" itu penting, jika tidak maka tidak akan berfungsi)
file tata letak
kode
sumber
<string name="test"><b>text bold</b> other text</string>
. Tidak berfungsi jika saya menulis<![CDATA[
Sederhana saja cukup tutup teks yang ditentukan seperti ini misalnya
<b>"your text here:"</b>
hasil: Kantor Pusat: Mooresville, North Carolina, AS
sumber
Jika Anda menggunakan Kotlin, itu menjadi lebih mudah dilakukan dengan menggunakan
core-ktx
, karena menyediakan bahasa khusus domain (DSL) untuk melakukan ini:Lebih banyak opsi yang disediakan olehnya adalah:
Akhirnya, Anda bisa langsung ke:
sumber
Ini solusi yang lebih baik jika Anda ingin membuat banyak teks menjadi tebal. Saya telah memperbaiki kode Eitan. terima kasih Eitan.
sumber
Berdasarkan jawaban @ mladj0ni, saya mendapatkan kode di bawah ini untuk berfungsi. Masalahnya adalah jika Anda menggunakan String.format , itu menghapus markup html, jadi Anda harus keluar dari simbol braket di strings.xml:
strings.xml:
<string name="welcome_messages">Hello, %1$s! You have <b>%2$d new messages</b>.</string>
code.java:
Ini lebih sederhana daripada SpannableStringBuilder. Sedangkan untuk kinerja, jika Anda hanya menampilkan satu string, maka pengguna tidak akan melihat milidetik tambahan untuk menguraikannya.
Lihat dokumentasi di sini .
sumber
Anda dapat menggunakan kode ini untuk mengatur bagian teks Anda menjadi tebal. Untuk apa pun yang ada di antara tag html tebal, itu akan membuatnya tebal.
sumber
Coba ini. Pasti bisa membantu
sumber
Buat char pertama dari string yang dapat spannable saat mencari char di list / recycler like
sebelumnya menyoroti seperti ini tetapi saya ingin seperti di bawah ini
untuk ini saya mencari panjang kata jika sama dengan 1, saya memisahkan string utama menjadi kata-kata dan menghitung posisi kata mulai kemudian saya mencari kata yang dimulai dengan char.
sumber
Saya datang ke sini untuk memberikan solusi yang lebih mutakhir, karena saya tidak puas dengan jawaban yang ada. Saya membutuhkan sesuatu yang akan berfungsi untuk teks yang diterjemahkan dan tidak memiliki kinerja yang baik menggunakan
Html.fromHtml()
. Jika Anda menggunakan Kotlin, berikut adalah fungsi ekstensi yang akan dengan mudah mengatur beberapa bagian teks Anda menjadi tebal . Ini berfungsi seperti penurunan harga, dan dapat diperluas untuk mendukung tag penurunan harga lainnya, jika perlu.sumber
wtsang02Jawaban adalah cara terbaik untuk melakukannya, karena, Html.fromHtml ("") sekarang sudah usang. Di sini saya hanya akan sedikit meningkatkannya bagi siapa pun yang memiliki masalah dalam membuat kata pertama menjadi dinamis, tidak peduli apa ukuran kalimatnya.
Pertama mari kita membuat metode untuk mendapatkan kata pertama:
Sekarang katakanlah Anda memiliki string panjang seperti ini:
Dan Anda ingin kalimat Anda menjadi seperti [email protected] inginkan menjadi teman Anda! Yang harus Anda lakukan adalah - dapatkan FirstWord dan dapatkan panjangnya untuk membuat FirstWord menjadi tebal, kira-kira seperti ini:
Sekarang ikuti saja langkah wtsang02 , seperti ini:
Dan itu dia! Sekarang Anda harus dapat menebalkan satu kata dengan ukuran berapa pun dari kalimat panjang / pendek. Semoga ini bisa membantu seseorang, selamat coding :)
sumber
Ini adalah fungsi ekstensi Kotlin yang saya gunakan untuk ini
Pemakaian:
.
sumber
Anda dapat menambahkan dua string secara terpisah di pembangun, salah satunya adalah spannedString, yang lainnya adalah yang biasa. Dengan cara ini Anda tidak perlu menghitung indeks.
sumber
jika posisi teks tebal diperbaiki (mis: jika pada awal textView), maka gunakan dua textView yang berbeda dengan latar belakang yang sama. Kemudian Anda bisa membuat textStyle textView lainnya sebagai huruf tebal.
Ini akan membutuhkan memori dua kali lipat dibandingkan dengan textView tunggal tetapi kecepatan akan meningkat.
sumber
Kode lain yang lebih khusus
sumber
Jika seseorang menggunakan Data Binding. Kita dapat mendefinisikan adaptor yang mengikat seperti ini
Kemudian kita bisa menggunakannya di TextView
dimana bold_text berada
sumber
Menemukan cara jika Anda ingin menangani pelokalan dalam berbagai bahasa, membosankan untuk dilakukan tetapi berfungsi, mari kita anggap kita menginginkan ini:
Dalam Bahasa Inggris:
Di Spanyol:
Anda harus membuat 3 string
Inggris:
Orang Spanyol:
Sekarang Anda bisa melakukan ini:
sumber
Sumber daya String Anda
kelas java Anda
sumber
Berikut ini adalah solusi lengkap saya untuk nilai String dinamis dengan pemeriksaan kasus.
Misalnya. completeString = "Saya BOLD"
KASUS I jika
*targetStringToFormat* = "bold"
dan*matchCase* = true
KASUS II jika
*targetStringToFormat* = "bold"
dan*matchCase* = false
Untuk Mendaftar:
Semoga itu bisa membantu!
sumber