Saya tahu saya bisa meletakkan tag HTML yang lolos dalam sumber daya string. Namun, melihat kode sumber untuk aplikasi Kontak saya dapat melihat bahwa mereka memiliki cara untuk tidak harus menyandikan HTML. Kutipan dari aplikasi Kontak strings.xml :
<string name="contactsSyncPlug"><font fgcolor="#ffffffff">Sync your Google contacts!</font>
\nAfter syncing to your phone, your contacts will be available to you wherever you go.</string>
Sayangnya, ketika saya mencoba sesuatu yang serupa (seperti Hello, <b>World</b>!
), getString()
mengembalikan string tanpa tag (saya bisa melihatnya di logcat
). Mengapa demikian? Bagaimana saya bisa mendapatkan string asli, dengan tag dan semuanya? Bagaimana aplikasi Kontak melakukannya?
\"
untukstyle
properti. Contoh<a style=\"...\">link</a>
Tampaknya
getString()
melakukan hal itu - mendapat string . Untuk menggunakan ini, Anda harus menggunakangetText()
(dan tidak lebihHtml.fromHtml()
), yaitu:Namun, tampaknya
android:text
properti tersebut melakukan hal yang sama, dan berikut ini adalah padanannya:Dan di
strings.xml
:sumber
\n
?Solusi terbaik adalah menggunakan sumber daya dengan cara:
dan kemudian menampilkannya dengan:
Cobalah untuk menggunakan sumber daya itu tanpa
<![CDATA[ ]]>
dan dengantv.setText(getText(R.string.htmlsource));
dan Anda akan melihat perbedaannya.sumber
Saya tahu ini adalah pertanyaan lama tetapi tampaknya jawaban yang paling efisien belum diajukan.
Cukup gunakan
HTML-escaped
karakter sehingga tidak akan diprosesgetString
tetapi akan diproses olehHtmlCompact.fromHtml
(atau yang lebih tuaHtml.fromHtml
).Ini juga mendukung lebih banyak tag seperti tautan HTML dll, tidak hanya pemformatan seperti
getString
metode.Misalnya sesuatu seperti ini seharusnya berfungsi:
Dalam kasus Anda, Anda mengganti
<
dengan<
seperti ini:sumber
itu bekerja untuk saya tanpa blok CDATA.
Saya menggunakannya dalam tata letak.
sumber
Ide: letakkan HTML dalam file berformat JSON dan simpan di / res / raw. (JSON kurang pilih-pilih)
Simpan catatan data seperti ini dalam objek array:
Untuk membaca data di aplikasi Anda:
Terakhir,
Data
kelas hanyalah wadah variabel publik untuk memudahkan akses ...sumber