我想将 webview 的默认字体更改为自定义字体。我正在使用 webview 开发 Android 的双语浏览器应用程序。
我尝试通过将自定义字体放入资产中来获取自定义字体的实例。但仍然无法将 webview 的默认字体设置为我的字体。
这是我尝试过的:
Typeface font = Typeface.createFromAsset(getAssets(), "myfont.ttf");
private WebView webview;
WebSettings webSettings = webView.getSettings();
webSettings.setFixedFontFamily(font);
任何人都可以纠正这个问题或建议任何其他方法将 webview 的默认字体更改为自定义字体吗?
Thanks!
有一个这样的工作示例这个项目 https://github.com/mayooresan/Japs-Attack-Ceylon--Android-App。归结为:
- In your
assets/fonts
文件夹中,放置所需的 OTF 或 TTF 字体(此处为 MyFont.otf)
-
创建一个用于 WebView 内容的 HTML 文件,位于assets
文件夹(这里里面assets/demo/my_page.html
):
<html>
<head>
<style type="text/css">
@font-face {
font-family: MyFont;
src: url("file:///android_asset/fonts/MyFont.otf")
}
body {
font-family: MyFont;
font-size: medium;
text-align: justify;
}
</style>
</head>
<body>
Your text can go here! Your text can go here! Your text can go here!
</body>
</html>
-
从代码中将 HTML 加载到 WebView 中:
webview.loadUrl("file:///android_asset/demo/my_page.html");
请注意,通过注入 HTMLloadData()
是不允许的。根据文档 http://developer.android.com/reference/android/webkit/WebView.html#loadData(java.lang.String,%20java.lang.String,%20java.lang.String):
请注意,JavaScript 的同源策略意味着在使用此方法加载的页面中运行的脚本将无法访问使用“data”以外的任何方案(包括“http(s)”)加载的内容。要避免此限制,请使用带有适当基本 URL 的 loadDataWithBaseURL()。
正如 @JaakL 在下面的评论中建议的那样,要从字符串加载 HTML,您应该提供指向您的资源的基本 URL:
webView.loadDataWithBaseURL("file:///android_asset/", htmlData);
引用字体时htmlData
,然后您可以简单地使用/fonts/MyFont.otf
(省略基本 URL)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)