在Android中使用来自resfont的自定义字体与WebView

在Android中使用来自resfont的自定义字体与WebView,第1张

概述我想改变加载到WebView中的html字符串的字体,就像这个问题中提到的一样: How to change font face of Webview in Android? 区别在于我没有使用旧方法将字体文件存储在assets文件夹中,但我将它们存储在res / font中,如“字体在XML中”android字体支持文档中所述: https://developer.android.com/gui 我想改变加载到WebVIEw中的HTML字符串的字体,就像这个问题中提到的一样:

How to change font face of Webview in Android?

区别在于我没有使用旧方法将字体文件存储在assets文件夹中,但我将它们存储在res / Font中,如“字体在XML中”androID字体支持文档中所述:

https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

现在,我显然不能使用:

文件:///androID_asset/Fonts/my_Font.otf

我试过了:

文件:///androID_res/Font/my_Font.otf

以及在res / Font文件夹中描述我的字体路径的许多其他方法,但它们都不起作用.

如果我的字体存储在res / Font文件夹中,如何为加载HTML字符串的WebVIEw使用自定义字体系列?

//编辑:

我当前的实现不起作用是:

@BindingAdapter("loadData")public static voID loadData(WebVIEw webVIEw,String HTMLData) {    webVIEw.loadDataWithBaseURL(null,HTMLData,"text/HTML","utf-8",null);}@BindingAdapter({"loadData","FontFamily"})public static voID loadData(WebVIEw webVIEw,String HTMLData,@FontRes int FontFamilyID) {    TypedValue value = new TypedValue();    ApplicationActivity.getSharedApplication().getResources().getValue(FontFamilyID,value,true);    String FontPath = value.string.toString();    file Fontfile = new file(FontPath);    String prefix = "<HTML>\n"            +"\t<head>\n"            +"\t\t<style type=\"text/CSS\">\n"            +"\t\t\t@Font-face {\n"            +"\t\t\t\tFont-family: 'CustomFont';\n"            +"\t\t\t\tsrc: url(\"file:///androID_res/Font/"+Fontfile.getname()+"\")\n"            +"\t\t\t}\n"            +"\t\t\tbody {\n"            +"\t\t\t\tFont-family: 'CustomFont';\n"            +"\t\t\t}\n"            +"\t\t</style>\n"            +"\t</head>\n"            +"\t<body>\n";    String postfix = "\t</body>\n</HTML>";    loadData(webVIEw,prefix + HTMLData + postfix);}
解决方法 刚试过,这与从资源加载字体的工作方式类似,你只需要改变基本网址来指向资源.

示例HTML

<HTML><head>    <style>        @Font-face {            Font-family: 'CustomFont';            src: url('Font/CustomFont.ttf');        }        #Font {            Font-family: 'CustomFont';        }    </style></head><body>    <p>No Font</p>    <br />    <p ID="Font">Font</p></body>

使用WebvIEw#loadDataWithBaseURL(String,String,String)将此HTML加载到webvIEw中,使用file:// androID_res /作为基本URL(第一个参数)

例:

webvIEw.loadDataWithBaseURL("file:///androID_res/",HTML,null)

编辑:

如果您在发布版本中使用proguard,则需要添加额外的规则以防止在ProGuard过程中重命名R类,否则WebVIEw将无法找到字体资源.详细信息可在this post找到

总结

以上是内存溢出为你收集整理的在Android中使用来自res / font的自定义字体与WebView全部内容,希望文章能够帮你解决在Android中使用来自res / font的自定义字体与WebView所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1136129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存