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
Posting Komentar