Saya ingin mengubah font default tampilan web menjadi font kustom. Saya menggunakan tampilan web dalam mengembangkan aplikasi browser dwibahasa untuk Android.
Saya mencoba mendapatkan contoh jenis huruf khusus dengan menempatkan font khusus saya di aset. Tapi masih tidak bisa menyetel font default tampilan web ke font saya.
Inilah yang saya coba:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
private WebView webview;
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(font);
Adakah yang bisa memperbaiki ini atau menyarankan metode lain untuk mengubah font default tampilan web ke font kustom?
Terima kasih!
android
webview
font-face
custom-font
Dhanika
sumber
sumber
Jawaban:
Ada contoh kerja untuk ini dalam proyek ini . Itu bermuara pada:
assets/fonts
folder Anda , tempatkan font OTF atau TTF yang diinginkan (di sini MyFont.otf)Buat file HTML yang akan Anda gunakan untuk konten WebView, di dalam
assets
folder (di sini di dalamassets/demo/my_page.html
):Muat HTML ke WebView dari kode:
Perhatikan bahwa menyuntikkan HTML melalui
loadData()
tidak diizinkan. Sesuai dokumentasi :Seperti yang disarankan @JaakL pada komentar di bawah, untuk memuat HTML dari string, Anda harus memberikan URL dasar yang mengarah ke aset Anda:
Saat mereferensikan font masuk
htmlData
, Anda dapat menggunakan/fonts/MyFont.otf
(menghilangkan URL dasar).sumber
res/font
folder. Lalu apa jalannya? Saya mencobafile:///android_res/font/
tetapi tampaknya tidak berhasil.Saya menggunakan kode ini :
sumber
font-family: 'myface';
Lebih sederhana lagi, Anda dapat menggunakan format URL Aset untuk mereferensikan font. Tidak perlu pemrograman!
...
sumber
.ttf
dan.html
di direktori yang sama dan memuatnya di browser Android, itu berfungsi. Namun di WebView aplikasi saya, saat CSS ditampilkan, teks muncul dalam font default Android meskipun menambahkan.ttf
keassets/fonts
folder proyek . Saya menguji pada 2.3.5, tetapi membangunnya dengan 2.1. Mungkinkah itu masalahnya, atau ada sesuatu yang saya lewatkan?view.loadUrl()
karya, sedangkanview.loadData()
tidak. Saya tidak tahu mengapa yang terakhir tidak.Itu bisa dilakukan di Android. Saya membutuhkan waktu tiga hari untuk menyelesaikan masalah ini. Tapi sekarang sepertinya sangat mudah. Ikuti langkah-langkah berikut untuk menyetel font khusus untuk Webview
1. Tambahkan font Anda ke folder aset
2. Salin font ke direktori file aplikasi
3. Anda harus memanggil fungsi di atas hanya sekali (Anda harus menemukan beberapa logika untuk ini).
4. Gunakan kode di bawah ini untuk menetapkan nilai tampilan web Anda. Di sini saya menggunakan CSS untuk mengatur font.
5. Anda dapat memanggil fungsi di atas seperti di bawah ini
sumber
saya melakukan ini dengan jawaban atas dengan tambahan ini:
dan kemudian gunakan
src: url("file:///android_asset/fonts/YourFont...
terima kasih untuk semuanya :)
sumber
Banyak dari jawaban di atas berfungsi sebagai pesona jika Anda memiliki konten Anda di folder aset Anda.
Namun, jika Anda menyukai saya ingin mengunduh dan menyimpan semua aset Anda dari server ke penyimpanan internal, Anda dapat menggunakan
loadDataWithBaseURL
dan menggunakan referensi ke penyimpanan internal sebagai baseUrl. Kemudian semua file di sana akan terkait dengan html yang dimuat dan ditemukan serta digunakan dengan benar.Di penyimpanan internal saya, saya telah menyimpan file-file berikut:
Kemudian saya menggunakan kode berikut:
File CSS yang digunakan di html di atas (style.css):
Saya hanya mencoba ini sambil menargetkan minSdkVersion 19 (4.4) jadi saya tidak tahu apakah ini berfungsi pada versi lain
sumber
sumber
Anda tidak perlu menggunakan file ttf lokal untuk mengatur font webview untuk android, Ini akan meningkatkan ukuran aplikasi secara keseluruhan.
Anda juga dapat menggunakan font online seperti font google ... Ini akan membantu mengurangi ukuran apk Anda.
Misalnya: kunjungi URL di bawah ini https://gist.github.com/karimnaaji/b6c9c9e819204113e9cabf290d580551#file-googlefonts-txt
Anda akan menemukan info yang diperlukan untuk menggunakan font ini. lalu buat String seperti di bawah ini
lalu muat tampilan web seperti ini
selesai. Anda dapat memuat font dari sumber eksternal dengan cara ini.
Sekarang bagaimana dengan font aplikasi, tidak masuk akal untuk menggunakan 1 font untuk tampilan web dan font yang berbeda untuk keseluruhan aplikasi. Jadi, Anda dapat menggunakan Font yang Dapat Diunduh di aplikasi Anda yang juga menggunakan sumber eksternal untuk memuat font di aplikasi.
sumber
Anda dapat melakukannya dengan menggunakan CSS. Saya melakukannya dengan aplikasi tetapi tidak berfungsi di Android 2.1 karena ada bug yang diketahui dengan browser Android 2.1.
sumber
Masalahnya adalah itu harus berada di folder, coba letakkan "./myfont.ttf" sebagai gantinya, jika tidak letakkan font di dalam folder di aset seperti "font / myfont.ttf" yang akan berfungsi dengan pasti.
sumber
mengujinya, bekerja untuk saya seperti pesona:
sumber
Jika Anda meletakkan font di bawah
res/font
seperti saya, maka Anda dapat mengubah dir sebagai berikut: -sumber
Gunakan https://github.com/delight-im/Android-AdvancedWebView library.
dalam data html:
dalam xml:
di jawa:
sumber
Ini adalah bagaimana Anda memuat htmlData dalam tampilan web:
di mana
getHtmlData(activity,**htmlData**)
mengembalikan string kode html.sumber