如何设置WebView字体

时间:2015-04-08 11:01:53

标签: android html webview

我试图将WebView的html设置为as;

    "<html>" +
        "<head>" +
            "<meta http-equiv=\"content-type\" content=\"text/html;\" charset=\"UTF-8\">" +
            "<style type=\"text/css\">" +
                "@font-face {" +
                        "font-family: 'SourceSansPro Regular'; " +
                        "src: url('file:///android_asset/fonts/SourceSansPro-Regular.ttf' +
                        // "/android_asset/fonts
                        "/SourceSansPro-Regular.ttf');" +
                    "} " +
                "body {" +
                    "font-family: 'SourceSansPro Regular';" +
                    // "color:f00;" +
                "}" +
            "</style> " +
        "</head> " +
        "<body>" +
            " My Html Data"+
        "</body>" +
    "</html>";

但是没有应用字体。如果我在assets文件夹中创建一个html文件,该字体应用得很好。但是我需要动态设置身体,所以不能这样使用。

1 个答案:

答案 0 :(得分:4)

使用webview网络设置,您可以设置webview的默认字体系列

WebSettings webSettings = myWebView.getSettings();
webSettings.setStandardFontFamily("Roboto-Light");

//如果是系统字体,则从资产或样式解析字体系列,如下所示,

int[] attrs = { android.R.attr.fontFamily };
        TypedArray a = obtainStyledAttributes(R.style.myFontStyle, attrs);
        String fontfamily = a.getString(0);

        // Main
        webSettings.setStandardFontFamily(fontfamily);

注意: 即使您使用此API:setStandardFontFamily指定字体系列webview将优先考虑来自服务器的字体(html页面)

<强>例如

  1. 如果html页面没有指定任何字体,那么它将采用这种动态 字体系列。

    2.html指定的字体不可用,然后它将采用webview中的动态字体

  2. 除此之外,服务器页面字体系列的优先级不是动态的。