Android - 动态更改 webview 自定义字体
Android - Change webview custom fonts dynamically
我有一个加载了 HTML 数据的网络视图。我希望能够在运行时更改 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-function 没有任何问题,因为它正在设置字体大小或颜色。
不要使用 setAttribute 更改样式:
你可以这样设置字体的样式
myList[0].style.font = FontStyle;
并将此格式的样式传递给 changeStyle
函数,FontStyle="italic bold 22px arial,serif";
或您可能使用的任何字体
我有一个加载了 HTML 数据的网络视图。我希望能够在运行时更改 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-function 没有任何问题,因为它正在设置字体大小或颜色。
不要使用 setAttribute 更改样式:
你可以这样设置字体的样式
myList[0].style.font = FontStyle;
并将此格式的样式传递给 changeStyle
函数,FontStyle="italic bold 22px arial,serif";
或您可能使用的任何字体