我一直在搜索,但找不到解决问题的方法。请好好看看:
到目前为止,我所做的是:
@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebViewClient(new WebViewClient());
mWebView.loadUrl("http://www.bbc.co.uk/");
然后,这就是我改变webview中字体的方式: 1 /方式1:
mWebView.loadUrl("javascript:(function() { var s=document.createElement('style');s.innerHTML ="
+ " '@font-face{font-family:ZawGyi-One;src:url(\"http://db.tt/OQ1RZoWc\");}"
+ "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\"})()");
2 /方式2:
mWebView.loadDataWithBaseURL(
null,
"<script>javascript:(function() { var s=document.createElement('style');s.innerHTML ="
+ " '@font-face{font-family:ZawGyi-One;src:url(\"http://db.tt/OQ1RZoWc\");}"
+ "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\"})() </script>",
"text/html", "UTF-8", null);
3 /方式3:
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
mWebView.loadUrl("javascript:(function() { var s=document.createElement('style');s.innerHTML ="
+ " '@font-face{font-family:ZawGyi-One;src:url('file:///android_asset/fonts/BLKCHCRY.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\"})()");
}
});
但不幸的是,我的解决方案都不起作用。即使我试图更改html文件insdie / assets /文件夹,并且字体存储在/ assets / fonts /文件夹中,我也无法完成此操作。
**还有一个问题:是否真的可以在已经加载的webview网站中更改字体样式?请有人指导我。
感谢您的大力帮助。
答案 0 :(得分:0)
查看此答案.. How to change font face of Webview in Android? ..
或尝试此演示项目.. https://github.com/mayooresan/Japs-Attack-Ceylon--Android-App
希望它会对你有所帮助。
答案 1 :(得分:0)
最后,我已经弄明白了:
1 /如果不更改网页内容,则无法更改字体。 WebView基本上是一个显示网页的视图,网页可能是静态的(例如html)或动态的。但它并没有改变网页的外观和感觉。所以它将显示与网页完全相同的文本。如果您需要更改字体,则必须在网页中更改它(可能是html)。
(来自Webview change font ? _android)
2 /另外一个解决方案是关于从webview的渲染引擎更改字体,对于Chrome应用程序,它现在应该是Blink,或者是Internet应用程序,它将是Webkit。所以,如果有人遇到与我相同的问题,我的小建议是找到方法,你通常没有足够的时间或授权在webview的渲染引擎上进行更改。 :)
度过愉快的一天。