text = text + CepVizyon.getPhoneCode() + "\n\n"
+ getText(R.string.currentversion) + CepVizyon.getLicenseText();
activationText.setText(text);
myTextView.setText(text);
Saya ingin mengubah warna untuk CepVizyon.getPhoneCode()
string. Bagaimana saya bisa melakukan ini?
android
uitextview
textview
atasoyh
sumber
sumber
Jawaban:
Spannable lebih fleksibel:
sumber
()
setelahtext.length
sebagailength
adalah metode tidak lapangan. Akan melakukannya sendiri tetapi pengeditan harus terdiri dari minimal 6 karakter :)Html.fromHtml(R.id.your_html_string);
sumber
Jika Anda memiliki teks statis yang membutuhkan warna, Anda dapat menambahkannya tanpa kode apa pun melalui file string:
kemudian
hasil
tidak yakin versi api mana ini berfungsi, tetapi tidak berfungsi untuk api 19 yang telah diuji sejauh ini, jadi mungkin hanya beberapa versi api terbaru yang mendukung ini
edit: seperti yang disebutkan @hairraisin di komentar, coba gunakan
fgcolor
alih-alihcolor
untuk warna font, maka itu harus berfungsi untuk level api yang lebih rendah, tetapi perlu lebih banyak pengujian untuk memastikansumber
<font fgcolor=...
pada API 15 dan API 25 (meskipun saya tidak menguji 19 secara khusus)Sehubungan dengan jawaban Maneesh, ini akan berhasil tetapi Anda perlu menambahkan dan menghilangkan tanda kutip untuk atribut color.
sumber
Itu bagus untukku!
sumber
Berikut solusi di Kotlin yang digunakan
SpannableString
untuk mengubah warna suatu string.sumber
Inilah
colorize
fungsi berdasarkan jawaban andyboot:sumber
Saya tidak suka ide melakukan ini dengan kode setiap kali saya ingin mewarnai bagian teks yang telah banyak saya lakukan di semua aplikasi saya (dan karena dalam beberapa kasus teks sedang diatur dalam runtime dengan inline- berbeda- warna yang ditentukan) jadi saya membuat sendiri
MarkableTextView
.Idenya adalah untuk:
Berikut proses langkah demi langkah:
Pertama saya membutuhkan cara untuk menemukan tag XML dalam string tertentu dan
Regex
melakukan triknya ..Agar cocok dengan tag XML di atas, ia harus memiliki kriteria berikut:
<a>
<a >
<a-a>
<a ..attrs..>
tetapi tidak< a>
<1>
<a></a>
tetapi tidak<a></b>
Sekarang untuk atributnya kita akan menggunakan yang ini ..
Ini memiliki konsep yang sama dan umumnya saya tidak perlu pergi jauh untuk keduanya karena kompiler akan mengurus sisanya jika ada yang keluar dari format.
Sekarang kita membutuhkan kelas yang dapat menampung data yang diekstrak:
Sebelum hal lain, kami akan menambahkan iterator keren ini yang telah lama saya gunakan untuk mengulang pertandingan (tidak dapat mengingat penulisnya) :
MarkableTextView:
Terakhir, styling, jadi inilah styler yang sangat sederhana yang saya buat untuk jawaban ini:
Dan beginilah tampilan
Markable
kelas yang berisi definisi:Yang kita butuhkan sekarang adalah mereferensikan string dan pada dasarnya akan terlihat seperti ini:
Pastikan untuk membungkus tag dengan
CDATA Section
dan escape"
with\
.Saya menjadikan ini sebagai solusi modular untuk memproses bagian-bagian teks dengan berbagai cara tanpa perlu memasukkan kode yang tidak perlu di belakang.
sumber
Saya melakukan seperti yang dikatakan boot andy, tetapi saya juga memiliki rentang yang dapat diklik, dan itu tidak berhasil karena urutannya
setSpans
dipanggil. Jadi, Anda harus panggilan pertamaspannable.setSpan(clickableSpanand...
makaspannable.setSpan(new ForegroundColorSpan...
untuk mendapatkan warna di TextViewsumber
Saya telah membuat fungsi kecil ini, cukup berikan teks Anda ke warna, indeks awal dan akhir dari apa yang ingin Anda warnai teks itu dan warnanya sendiri
Kotlin
Pemakaian
sumber
Dengan fungsi ekstensi Kotlin tujuan umum, akan terlihat seperti ini:
sumber
Gunakan pelarian karakter + Html.fromHtml ()
Cara menyimpan String di folder sumber daya string
Bagaimana cara menampilkan di TextView?
Bonus:
String dalam output terlihat seperti ini
sumber
Salah satunya adalah dengan membaginya
myTextView
menjadi beberapa bagianTextViews
, salah satunya hanya untuk kode telepon. Maka mengendalikan warna spesifikTextView
ini cukup mudah.sumber