html5字体修改webview,WebView中修改字体
一般情况下我们做加载网页都是返回一个url,我们进行加载。各种各样的样式都已经在网页中做了处理。但是,也会碰到一些情况,需要我们加载代码片段。还有修改一些样式,比如:修改网页中的字体。当然,本文中的修改字体同样可以修改网页中的字体。
那么现在就将这个问题做一下记录。文章的末尾也会附上承香墨影有关app修改字体的系列文章。
添加字体
新建Assets及fonts目录,并将字体文件拷贝到fonts目录下
字体.png
老生常谈的问题,加载代码片段
mWebView.loadDataWithBaseURL("file:///android_asset/",html, "text/html", "utf-8", null);
这一块没有什么可说的。
重要的点是在WebViewClient中做的处理
wvMian.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:!function(){" + "s=document.createElement('style');s.innerHTML=" + "\"@font-face{font-family:myhyqh;src:url('**injection**/hyqh.ttf');}*{font-family:myhyqh !important;}\";"
+ "document.getElementsByTagName('head')[0].appendChild(s);" +
"document.getElementsByTagName('body')[0].style.fontFamily = \"myhyqh\";}()");
}
//由于网页上是没有权限访问本地的asset文件夹的,因此我们需要拦截请求来加载本地的文件,如果是代码片段可以直接用asset文件夹,我这里替换了`file:
//android_assets/`为 `**injection**/`了,我们还需要重写`shouldInterceptRequest`
//在请求为我们这个字体文件的时候,加载本地文件:
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
WebResourceResponse response = super.shouldInterceptRequest(view, url);
if (url != null && url.contains("**injection**/")) {
//String assertPath = url.replace("**injection**/", "");
String assertPath = url.substring(url.indexOf("**injection**/") + "**injection**/".length(), url.length());
try {
response = new WebResourceResponse("application/x-font-ttf", "UTF8", getAssets().open(assertPath));
} catch (IOException e) {
e.printStackTrace();
}
}
return response;
}
});
如果都是代码片段形式的话可以用以下的方式
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
view.loadUrl("javascript:!function(){" +
"s=document.createElement('style');s.innerHTML="
+ "\"@font-face{font-family:MyCustomFont;src:url('****/myfont.ttf');}*"
+"{font-family:MyCustomFont !important;}\";"
+ "document.getElementsByTagName('head')[0].appendChild(s);" +
"document.getElementsByTagName('body')[0].style.fontFamily = \"MyCustomFont\";}()");
}
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
WebResourceResponse response = super.shouldInterceptRequest(view, url);
Log.i("webview","load intercept request:" + url);
if (url != null && url.contains("myfont.ttf")) {
String assertPath ="fonts/myfont.ttf";
// String assertPath = url.substring(url.indexOf("**injection**/") + "**injection**/".length(), url.length());
try {
response = new WebResourceResponse("application/x-font-ttf","UTF8", getAssets().open(assertPath));
} catch (IOException e) {
e.printStackTrace();
}
}
return response;
}
});
以上就可以实现了更改网页中的字体了。
膜拜一下大神!!!
html5字体修改webview,WebView中修改字体相关推荐
- 微软 Outlook 如何修改邮件列表中的字体或字号
因为电脑的操作系统是默认英文的,默认的字体实在是太难看了. 解决方案 我们是可以对字体进行修改的. 例如修改成下面的方案. 选择视图 首先,先选定顶部的视图. 然后在当前的视图下,选择视图设置. 随后 ...
- win10修改系统字体(替换OneNote中Calibri字体)
微软的OneNote还是很好用的,但是字体问题一直是一个吐槽点. 我自己就去微软官网吐槽了好几次,然而并没有什么用.我说设置默认字体为consolas完全无法生效,再次输入笔记时,中文自动改为微软雅黑 ...
- 修改jupyter notebook中的字体
windows系统默认的jupyter 中字体不太舒适,而平时习惯了pycharm中自定义字体的舒适感.所以我折腾了一下将notebook中的字体换掉. 找到python安装的路径, Lib\site ...
- android开发字体样式,Android开发中修改程序字体的样式
Android提供三种字体:"Sans","serif"和"monospace". 1.在Android XML文件中设置字体 可以采用an ...
- unity 发光字体_Unity3D 设置OnGUI中的字体样式、字体颜色、字体大小等
1:字体样式 从系统盘,如C:\Windows\Fonts找一个.ttf格式的字体库,放到Assets目录下. 此时选中该字体库,在Inspector面板可以修改字体的大小,试了一下修改字体的颜色(F ...
- linux路由修改密码,Linux中修改Mysql root用户密码的方法
Linux中修改Mysql root用户密码的方法 下面给大家分享下在Linux下如何修改Mysql的用户(root)的密码,分两种情况:第一种当拥有原来的mysql的root密码,第二种情况忘记原来 ...
- html页面icon字体无法显示,bootstrap中icon字体图标怎么不显示?
bootstrap中icon字体图标怎么不显示?下面本篇文章给大家介绍一下Bootstrap字体图标不显示问题.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助. 问题: bootstr ...
- 微信小程序可以加服务器上的字体,微信小程序中自定义字体
微信小程序支持自定义字体开放出来也有段时间,这边整理下使用自定义字体中,容易忽略的一些问题,和简便的全局自定义方式.如果是同时加载两种字体包,先下载下来的会被后下载下来的字体包给覆盖. 官网接口文档 ...
- css引入本地字体文件,关于css中引入字体文件
关于css中引入字体文件 css样式代码: @font-face { font-family: Lovelo-Black;//定义font的名字 src: url(font/Lovelo Black. ...
- matlab显示字体颜色,在Matlab中显示字体颜色
我正在尝试创建一个数字(转换为字符串)的数组,并在阈值下降的下方,对于我当前使用0.5的测试.我需要我的桌子上的每个值的字体都落在我的门槛上,以红色显示,在我目前的代码中,我只使用2列,但我将使用10 ...
最新文章
- 2022-2028年中国手机支付市场投资分析及前景预测报告
- Java基础——深入理解ReentrantLock
- 在 Tomcat 中设置 JDBCRealm
- Web前端性能优化,应该怎么做?
- 彻底搞懂阻塞、非阻塞、同步、异步
- python gmm em算法 2维数据_AI大语音(六)——混合高斯模型(GMM)(深度解析)...
- 《Java程序员职场全攻略:从小工到专家》连载十:这条路大家都是怎么走的
- 软件测试第五周 - 编码的 UI 测试
- pdfptable pdf生成表格分页_Excel按一下这个键,一张纸打印所有表格,不要浪费A4纸了...
- 转换大师swf转html,iPixSoft SWF to HTML5 Converter
- Linux基础:systemctl和journalctl常用命令
- VRay无限平面的应用教程
- python之whl文件解释与安装
- 产品必备技能(十):如何绘制原型图?先要绘制页面流程图+页面原型图!附实操原型图、流程图实例(抖音)
- 教你如何挑选趁手的笔记本电脑!
- Vue.js 踩坑记 (一)
- python如何编写爬虫程序_python编写网络爬虫程序
- OpenStack 基础知识(学神教育学习笔记)
- 今晚直播 |现实环境中的强化学习如何解决?你不可错过的RL终极奥义
- LeetCode 24.两两交换链表中的节点 C语言
热门文章
- Microsoft Access教程_编程入门自学教程_菜鸟教程-免费教程分享
- JS 定时器setInterval clearInterval 延时器setTimeOut 异步 动画
- H.266/VVC SCC技术学习:帧内块拷贝(Intra block copy, IBC)
- 2022跨境出海:东南亚电商市场现状及发展前景
- Notepad++拼写检查
- 在jupytor中运行随机森林预测泰坦尼克旅客生存情况
- 腾讯云网站备案咨询:网站命名基本要求
- JVM之对象内存详解
- 百度集团副总裁吴甜发布文心大模型最新升级,AI应用步入新阶段
- 程序员的生活就是这么朴实无华,且没钱。