Android - 动态更改 webview 自定义字体

Android - Change webview custom fonts dynamically

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

font selector

如何将所选字体应用到 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-function 没有任何问题,因为它正在设置字体大小或颜色。

不要使用 setAttribute 更改样式:

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

myList[0].style.font = FontStyle;

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