【问题标题】:Android - Change webview custom fonts dynamicallyAndroid - 动态更改 webview 自定义字体
【发布时间】:2015-02-10 10:44:20
【问题描述】:

我有一个加载了 HTML 数据的 webview。我希望能够在运行时更改 HTML 的字体。为此,我有一个设置,用户可以选择一种字体(字体取自 /system/fonts 目录)。

如何将所选字体应用到 webview?

我通过使用 javascript 进行了尝试:

String fontString = "font-family: 'myFont'; url: /system/fonts/DroidSans.ttf;";
if (android.os.Build.VERSION.SDK_INT < 19) {
    webview.loadUrl("javascript:changeStyle('body', '" + fontString + "')");
} else {
    webview.evaluateJavascript("javascript:changeStyle('body', '" + fontString + "')", null);
}

在 HTML 的 javascript 中定义 changeStyle():

function changeStyle(tag, style) {
    var myList = document.getElementsByTagName(tag); // get all p elements
    var x = myList.length;
    myList[0].setAttribute("style", style);
}

但是,这不起作用。我很确定 changeStyle() js 函数没有任何问题,因为它可以设置字体大小或颜色。

【问题讨论】:

    标签: javascript android css fonts


    【解决方案1】:

    不要使用 setAttribute 改变样式:https://stackoverflow.com/a/6065647/3556874

    你可以像这样设置字体的样式

    myList[0].style.font = FontStyle;
    

    并将这种格式的样式传递给 changeStyle 函数、FontStyle="italic bold 22px arial,serif"; 或任何您可能使用的字体

    【讨论】:

    • 这里没有解释如何将系统字体应用到 webview。例如,Arial 不是系统字体之一。如果我把roboto作为字体,什么都不会发生。
    • 如何使用自定义字体是一个不同的问题!!这个答案解释了如何正确地动态应用字体。如果你想学习如何使用自定义字体阅读这个w3schools.com/cssref/css3_pr_font-face_rule.asp,或者你可以在你的项目中包含相应的字体文件。
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 2015-11-10
    • 2016-03-25
    • 2017-03-06
    • 2016-09-27
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    相关资源
    最近更新 更多