Membuat Custom Teks Dinamis di Android dengan HTML dan String Resources

Dalam pengembangan aplikasi Android, sering kali kita perlu menampilkan teks yang dinamis dan memiliki style tertentu. Salah satu cara untuk mencapai hal ini adalah dengan memanfaatkan HTML dalam string resources dan mengolahnya dengan kode Kotlin. Artikel ini akan membahas bagaimana cara membuat teks dengan format bold dan warna yang dinamis, seperti pada contoh berikut:

1. Mendefinisikan String Resources dengan HTML

Langkah pertama adalah mendefinisikan string resources di strings.xml dengan menggunakan tag HTML. Kita akan menggunakan %1$s dan %2$s sebagai placeholder untuk parameter dinamis.

<string name="error_overload">
<![CDATA[Jumlah barang yang perlu Anda kirimkan adalah
<br/><font color="#000000"><b>%1$s</b></font>, 
silakan lakukan penyesuaian pada
<br/><font color="#000000"><b>Kontainer %2$s.</b></font>]]>
</string>

Berikut adalah penjelasan dari tag HTML yang digunakan:

  • <br/>: Digunakan untuk membuat baris baru.
  • <font color="#000000">: Digunakan untuk mengatur warna teks menjadi hitam.
  • <b>: Digunakan untuk membuat teks menjadi bold.
  • %1$s dan %2$s: Digunakan sebagai placeholder untuk parameter dinamis.

2. Membuat Extension Function untuk Mengolah HTML

Selanjutnya, kita akan membuat extension function di Kotlin untuk mengolah string HTML menjadi Spanned, yang dapat ditampilkan di TextView.

fun String.fromHtml(): Spanned {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Html.fromHtml(this, Html.FROM_HTML_MODE_LEGACY)
} else {
@Suppress("DEPRECATION")
Html.fromHtml(this)
}
}

Extension function ini akan memeriksa versi SDK Android dan menggunakan metode Html.fromHtml() yang sesuai.

3. Menggunakan String Resources dan Extension Function

Terakhir, kita akan menggunakan string resources dan extension function yang telah dibuat untuk menampilkan teks dinamis di TextView.

val overloadMessage = getString(
R.string.error_overload,
product.quantity,
containerNumber
).fromHtml()

Pada kode di atas, product.quantity dan containerNumber adalah parameter dinamis yang akan menggantikan %1$s dan %2$s di string resources.

Kesimpulan

Dengan menggunakan HTML dalam string resources dan extension function di Kotlin, kita dapat dengan mudah membuat teks dinamis di aplikasi Android. Pendekatan ini memungkinkan kita untuk memisahkan kode aplikasi, sehingga kode menjadi lebih bersih dan mudah dikelola.

Semoga artikel ini bermanfaat bagi Anda dalam mengembangkan aplikasi Android yang lebih baik.

Komentar