【问题标题】:Change font WebView for an already loaded site with Android使用 Android 更改已加载站点的字体 WebView
【发布时间】: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 )。你或其他人可以请帮助我吗?!?提前致谢。

标签: android css fonts webview


【解决方案1】:

看看这个答案..How to change font face of Webview in Android?..

或者试试这个演示项目..https://github.com/mayooresan/Japs-Attack-Ceylon--Android-App

希望对你有帮助。

【讨论】:

    【解决方案2】:

    我终于想通了:

    1/ 如果不更改网页内容,您将无法更改字体。 WebView 基本上是一个显示网页的视图,网页可能是静态的(例如 html)或动态的。但它不会改变网页的外观和感觉。所以它会显示与网页完全相同的文本。如果您需要更改字体,则必须在网页中进行更改(可能是 html)。

    (来自Webview change font ? _android

    2/另一种解决方案是从webview的渲染引擎更改字体,对于Chrome应用程序,现在应该是Blink,或者互联网应用程序,它会是Webkit。

    所以,如果有人遇到和我一样的问题,我的小建议是找到解决办法,你通常没有足够的时间或授权在 webview 的渲染引擎上进行更改。 :)

    祝你有美好的一天。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多