android无法在webview中更改字体

时间:2014-10-08 11:10:14

标签: android android-webview android-fonts

我正在尝试更改我的webview元素的字体。我创建了一个网页并放置了除此之外的.ttf文件。我打开页面看起来很好。现在我想使用webview来显示它。由于我使用的是twitter bootstrap,我使用loadUrl方法加载页面。

页面加载但字体错误。在我的CSS样式文件中,我尝试了这些(我的html文件位于'www'目录中的资产文件夹中,我也将字体放在该文件夹中):

@font-face {
    font-family: 'Far.TitrDF';
    src: url('file:///android_asset/www/Far_TitrDF.ttf');
}


@font-face {
    font-family: 'Far.TitrDF';
    src: url('Far_TitrDF.ttf');
}

我还尝试在assets文件夹中创建一个'fonts'目录并将我的字体放在那里并尝试这些:

@font-face {
    font-family: 'Far.TitrDF';
    src: url('file:///android_asset/fonts/Far_TitrDF.ttf');
} 


@font-face {
    font-family: 'Far.TitrDF';
    src: url('../fonts/Far_TitrDF.ttf');
}

但没有成功。有趣的是,其他一切,如样式,都显示得很好。你能告诉我这里我做错了什么吗?

2 个答案:

答案 0 :(得分:1)

改变网页视图字体的坏主意,如果您的数据只是文字首选方式,则使用TextView和SetTypeface方法......

但你仍然可以通过在css中混合使用html和css以及font命令来使用自定义字体进行Web视图,但字体必须是web字体而不是任何字体,而字体url中没有子文件夹

答案 1 :(得分:0)

String data="<html><head><meta      http-equiv=\"content-type\" content=\"text/html;\" charset=\"UTF-8\"><style>"+
        "@font-face {"+
          "font-family: \"MyFont\";"+
          "src: url('file:///android_asset/fonts/normal.otf');"+
          "font-weight:bold !important;"+
        "}"+
        "@font-face {"+
          "font-family: \"MyFontBold\";"+
          "src: url('file:///android_asset/fonts/bold.otf');"+
          "font-weight:bold !important;"+
        "}"+
        "@font-face {"+
          "font-family: \"MyFontItalic\";"+
          "src: url('file:///android_asset/fonts/Italic.otf');"+
          "font-weight:bold !important;"+
        "}"+
        "@font-face {"+
          "font-family: \"BoldItalic\";"+
          "src: url('file:///android_asset/fonts/BoldItalic.otf');"+
          "font-weight:bold !important;"+
        "}"+
        "strong { font-family:\"MyFontBold\"; }"+
        "em {font-family :\"MyFontItalic\";}"+
        "body { font-family:\"MyFont\"; }"+
        "body strong em {font-family:\"BoldItalic\";}"+ 
        "body em  strong{font-family:\"BoldItalic\";}"+
        "</style>"+
        "</head>"+
        "<body>"+your description String+ "</body></html>";


        web.loadDataWithBaseURL("file:///android_asset/", data, "text/html",
                "UTF-8", "null");