Saya mencari cara untuk mengubah warna teks dari satu kata dalam a TextView
dari dalam Activity
.
Misalnya dengan ini:
String first = "This word is ";
String next = "red"
TextView t = (TextView) findViewById(R.id.textbox);
t.setText(first + next);
Bagaimana cara mengubah warna next
teks menjadi merah?
Jawaban:
Cara termudah yang saya tahu adalah dengan hanya menggunakan html.
Tetapi ini akan mengharuskan Anda untuk membangun kembali TextView ketika (jika?) Anda ingin mengubah warna, yang dapat menyebabkan kerumitan.
sumber
fromHtml
sudah tidak digunakan lagi sekarangHtml.fromHtml
sudah ditinggalkan. Solusi ini berhasil untuk saya!Anda harus menggunakan spannable ini juga akan memungkinkan Anda untuk meningkatkan beberapa ukuran teks, membuatnya tebal dll .... bahkan memasukkan beberapa gambar.
sumber
SpannableString
objek dengan menggunakanTextFormatted
Properti kontrol Anda.java.lang.String cannot be cast to android.text.Spannable
kesalahan.Gunakan SpannableStringBuilder seperti ini:
sumber
new ForegroundColorSpan(Color)
untuk membuat teks mempertahankan warna default aslinya?untuk string panjang Anda bisa menggunakan ini:
sumber
Jika Anda ingin mengubah status semua instance tertentu
String
di dalamTextView
teks (case insensitive), Anda dapat menggunakanStringBuilder
s danSpannableString
seperti ini:}
TextView
teks di dalam aStringBuilder
.StringBuilder
.TextView
teks utuh di dalam aSpannableString
String
contoh di dalamTextView
teks dan mengubahnya saat tercapai.TextView
keSpannableString
.sumber
Saya mengimplementasikan fungsi utilitas di Kotlin untuk kasus penggunaan saya sendiri dan mungkin berguna untuk orang lain.
Bagaimana saya menggunakannya:
sumber
MENGGUNAKAN:
Fungsi:
sumber
Saya pikir ini lebih mudah dibaca untuk mewarnai sebuah kata dalam sebuah string, itu juga mungkin lebih efisien karena Anda menulis sekali
sumber