【发布时间】:2014-06-25 06:03:41
【问题描述】:
我已经搜索了好几天,但找不到我的问题的解决方案。请看一看:
- 输入:带有已加载网页的 WebView。
- 输出:更改 WebView 中加载的网页的字体。
到目前为止我所做的是:
@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 站点中更改字体样式吗?有人,请指导我。
感谢您的大力帮助。
【问题讨论】:
-
看看这个答案..stackoverflow.com/questions/3900658/….. 希望它会帮助你。
-
谢谢!但是这些主题是关于在 /assets/ 文件夹中更改离线 html 站点的字体样式,我的意思是在将该站点加载到 webview 时更改在线 Web 的字体样式(如 bbc.co.uk )。你或其他人可以请帮助我吗?!?提前致谢。