Chcę zmienić domyślną czcionkę widoku internetowego na czcionkę niestandardową. Używam Webview do tworzenia dwujęzycznej przeglądarki na Androida.
Próbowałem uzyskać niestandardowy krój, umieszczając moją niestandardową czcionkę w zasobach. Ale nadal nie mogłem ustawić domyślnej czcionki Webview na moją czcionkę.
Oto, czego próbowałem:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
private WebView webview;
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(font);
Czy ktoś może to poprawić lub zasugerować inną metodę zmiany domyślnej czcionki Webview na niestandardową czcionkę?
Dzięki!
android
webview
font-face
custom-font
Dhanika
źródło
źródło
Odpowiedzi:
W tym projekcie jest działający przykład . Sprowadza się do:
assets/fonts
folderze umieść żądaną czcionkę OTF lub TTF (tutaj MyFont.otf)Utwórz plik HTML, którego będziesz używać dla zawartości WebView, w
assets
folderze (tutaj w środkuassets/demo/my_page.html
):Załaduj kod HTML do WebView z kodu:
Zwróć uwagę, że wstrzykiwanie kodu HTML przez
loadData()
nie jest dozwolone. Zgodnie z dokumentacją :Jak @JaakL sugeruje w poniższym komentarzu, aby załadować kod HTML z ciągu znaków, należy zamiast tego podać podstawowy adres URL wskazujący na zasoby:
Odwołując się do czcionki w
htmlData
, możesz po prostu użyć/fonts/MyFont.otf
(pomijając podstawowy adres URL).źródło
res/font
folderze. Jaka byłaby wtedy ścieżka? Próbowałem,file:///android_res/font/
ale to nie działa.Używam tego kodu :
źródło
font-family: 'myface';
Jeszcze prościej, możesz użyć formatu adresu URL zasobu, aby odwołać się do czcionki. Bez programowania!
...
źródło
.ttf
i.html
w tym samym katalogu i załaduję go w przeglądarce Androida, działa. Jednak w WebView mojej aplikacji, podczas gdy CSS pokazuje, tekst pojawia się w domyślnej czcionce Androida pomimo dodania.ttf
doassets/fonts
folderu projektu . Testuję na 2.3.5, ale buduję na 2.1. Czy to może być problem, czy czegoś mi brakuje?view.loadUrl()
dzieł, aview.loadData()
nie. Nie mam pojęcia, dlaczego ten drugi nie.Można to zrobić w systemie Android. Rozwiązanie tego problemu zajęło mi trzy dni. Ale teraz wydaje się to bardzo łatwe. Wykonaj poniższe czynności, aby ustawić niestandardową czcionkę dla Webview
1. Dodaj czcionkę do folderu zasobów 2.
Skopiuj czcionkę do katalogu plików aplikacji
3. Powyższą funkcję musisz wywołać tylko raz (musisz znaleźć do tego jakąś logikę).
4. Użyj poniższego kodu, aby ustawić wartość widoku internetowego. Tutaj używam CSS, aby ustawić czcionkę.
5. Możesz wywołać powyższą funkcję jak poniżej
źródło
zrobiłem to przez górne odpowiedzi z następującymi dodatkami:
a następnie użyj
src: url("file:///android_asset/fonts/YourFont...
Dziękuję wszystkim:)
źródło
Wiele z powyższych odpowiedzi działa, jeśli masz swoje treści w folderze zasobów.
Jeśli jednak chcesz, abym pobierał i zapisywał wszystkie swoje zasoby z serwera do pamięci wewnętrznej, możesz zamiast tego użyć
loadDataWithBaseURL
i użyć odniesienia do pamięci wewnętrznej jako baseUrl. Wtedy wszystkie pliki będą zależne od załadowanego html i zostaną znalezione i użyte poprawnie.W mojej pamięci wewnętrznej zapisałem następujące pliki:
Następnie używam następującego kodu:
Plik CSS użyty w powyższym html (style.css):
Próbowałem tego tylko podczas kierowania na minSdkVersion 19 (4.4), więc nie mam pojęcia, czy działa na innych wersjach
źródło
źródło
Nie musisz używać lokalnego pliku ttf, aby ustawić czcionkę widoku internetowego dla Androida, zwiększy to cały rozmiar aplikacji.
możesz także używać czcionek internetowych, takich jak czcionka Google ... Pomoże to zmniejszyć rozmiar pliku APK.
Na przykład: odwiedź poniższy adres URL https://gist.github.com/karimnaaji/b6c9c9e819204113e9cabf290d580551#file-googlefonts-txt
Znajdziesz niezbędne informacje, aby użyć tej czcionki. następnie utwórz ciąg jak poniżej
następnie załaduj widok sieciowy w ten sposób
Gotowe. W ten sposób będziesz mógł załadować czcionkę z zewnętrznego źródła.
A co z czcionką aplikacji, nie ma sensu używać jednej czcionki dla widoku internetowego i innej czcionki dla całej aplikacji. Możesz więc używać czcionek do pobrania w swojej aplikacji, która również korzysta z zewnętrznych źródeł do ładowania czcionek w aplikacji.
źródło
Możesz to zrobić za pomocą CSS. Zrobiłem to z aplikacją, ale nie będzie działać w systemie Android 2.1, ponieważ jest znany błąd w przeglądarce Androida 2.1.
źródło
Problem polega na tym, że musi znajdować się w folderze, spróbuj zamiast tego wstawić „./myfont.ttf”, jeśli nie, umieść czcionkę w folderze w zasobach takich jak „fonts / myfont.ttf”, które na pewno zadziałają.
źródło
przetestuj to, pracuj dla mnie jak urok:
źródło
Jeśli umieszczasz czcionki pod
res/font
takimi jak ja, możesz zmienić katalog na następujący: -źródło
Użyj biblioteki https://github.com/delight-im/Android-AdvancedWebView .
w danych html:
w xml:
w java:
źródło
Oto jak ładujesz htmlData w widoku internetowym:
gdzie
getHtmlData(activity,**htmlData**)
zwraca ciąg kodu html.źródło