Ho trovato molte domande per impostare il tipo di carattere su webview. Ho provato che non riesco a riparare.come impostare il tipo di carattere per la webview
Ho 10 file html nella mia cartella delle assest. In swipe mi sto visualizzando uno ad uno in webview, fino a quando non funziona, ora ho bisogno di cambiare il tipo di carattere (per tutte le pagine html che im caricano 10 file). Come posso cambiare il tipo di carattere del mio html visualizzato in webview.
primo modo
mainContent.getSettings().setJavaScriptEnabled(true);
WebSettings webSettings = mainContent.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
mainContent.requestFocusFromTouch();
mainContent.setWebViewClient(new WebViewClient());
mainContent.setWebChromeClient(new WebChromeClient());
mainContent.loadUrl("file:///android_asset/"+filename.get(position));
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
webSettings.setFixedFontFamily(font);
webSettings.setDefaultFontSize(20);
secondo modo
ho ottenere il contenuto di HTML e ho passato in una stringa, non posso in grado di passare in esso, se il contenuto passato correttamente questo funzionerà.
mainContent.getSettings().setJavaScriptEnabled(true);
WebSettings webSettings = mainContent.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
mainContent.requestFocusFromTouch();
mainContent.setWebChromeClient(new WebChromeClient());
mainContent.loadUrl("file:///android_asset/"+filename.get(position));
mainContent.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mainContent.setWebViewClient(null);
mainContent.loadUrl("javascript:window.HTMLOUT.processHTML('<div>'+document.getElementsByTagName('div')[0].innerHTML+'</div>');");
String pish = "<html><head><style type=\"text/css\">@font-face {font-family: MyFont;src: url(\"file:///android_asset/fonts/Kelvetica.ttf\")}body {font-family: MyFont;font-size: medium;text-align: justify;}</style></head><body>";
String pas = "</body></html>";
String myHtmlString = pish + page + pas; // here i can't able to get the `page`
mainContent.loadDataWithBaseURL(null,myHtmlString, "text/html", "UTF-8", null);
e nella mia attività
class MyJavaScriptInterface {
@SuppressWarnings("unused")
public void processHTML(final String html) {
runOnUiThread(new Runnable() {
public void run() {
Spanned page = Html.fromHtml(html);
System.out.println("content"+page);
}
});
}
}
ho bisogno di passare questo page
nel codice sopra
terzo modo
mainContent.getSettings().setJavaScriptEnabled(true);
WebSettings webSettings = mainContent.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setBuiltInZoomControls(true);
mainContent.requestFocusFromTouch();
mainContent.addJavascriptInterface(new MyJavaScriptInterface(), "HTMLOUT");
mainContent.loadUrl("file:///android_asset/"+filename.get(position));
mainContent.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mainContent.setWebViewClient(null);
mainContent.loadUrl("javascript:(function() { var s=document.createElement('style');s.innerHTML ="
+ " '@font-face{font-family:ZawGyi-One;src:url('file:///android_asset/fonts/zeroesthree.ttf');}"
+ "body,div,h1,h2,h3,input,textarea{font-family:ZawGyi-One! important;}';"
+ "document.getElementsByTagName('head')[0].appendChild(s);document.getElementsByTagName('body')[0].style.fontFamily = \"ZawGyi-One\"})()");
}
});
Ho cercato in questo modo. Non riesco a cambiare il tipo di carattere. Qualcuno ha un'idea per favore condividilo. Sto lavorando a questo problema da due giorni. Grazie in anticipo.
ho un file statico, sto trovandolo da db e visualizzato in webview usando la posizione .. –
ho provato a modificare il codice .. non funziona –
sì è funzionato .. leggera modifica come questa .. 'mainC ontent.loadUrl ("javascript: document.getElementById ('maindiv'). style.fontFamily = 'courier';"); 'dovresti il' fontname' nelle virgolette singole @JaiSoni –