如何更改Android中Webview的字体?

2024-02-07

我想将 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。归结为:

  1. In your assets/fonts文件夹中,放置所需的 OTF 或 TTF 字体(此处为 MyFont.otf)
  2. 创建一个用于 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>
    
  3. 从代码中将 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(使用前将#替换为@)

如何更改Android中Webview的字体? 的相关文章

  • 我所有的布局 xml 文件都变成了自动生成的文件

    昨天我的应用程序上的所有内容都运行完美 但今天当我打开 Android Studio 时 所有 xml 文件都已损坏 不确定这是否是正确的术语 每个人都是这样的 我今天遇到了同样的问题 下面是我所做的几个步骤 我取得了成功来解决这个问题 只
  • 如何随着 ViewPager 位置偏移量的变化对视图进行动画处理

    我们希望创建一个带有动画的应用程序介绍 用户可以在其中滚动页面 并且当用户滚动时 视图会动画化并遍历所有幻灯片 动画视图应该随着用户滚动而移动 因此如果用户滚动得更快 动画视图应该移动得更快 如果用户滚动回到上一页 动画视图应该向后移动 这
  • Flutter - 每次应用程序重新启动后保留变量的值

    在我的一页上 我希望我的用户从一个变量上的默认文本开始 codeDialog 然后我希望他们更改该文本 之后他们编写的文本将成为我的新默认文本 遗憾的是我无法让它发挥作用 现在 当我重新启动应用程序并打开该屏幕时 它会重置为null 我认为
  • 按大小、日期、名称等在回收器视图中排序并记住选择

    我正在制作图库应用程序 我想为其添加排序功能 我可以使用以下命令在运行时对项目进行排序Comparator但问题是 每当我退出应用程序时 列表都会再次从数据库中出来 并且所有列表都未排序 我想在我的应用程序中提供按日期 大小 名称等排序的选
  • 如何让Service即使被系统杀死也无法删除?

    我正在创建一个蓝光过滤器应用程序 因此 我想显示所有应用程序的视图 我通过以下服务做到了 public class OverlayService extends Service public OverlayService View mVie
  • 使用选项卡式活动中的捆绑包将值从活动传递到片段

    我是一个java文盲 但仍在尝试开发一个供我个人使用的应用程序 我从 android studio 的 Tabbed Activity 开始 除了 MainActivity 中的一个片段和一个包之外 大部分没有改变 这是我的代码 主要活动
  • 指标元素之间的空间

    如何增加 减少指标元素之间的空间ViewPagerIndicator 我用过CirclePageIndicator 我能够通过以下步骤在两个指标之间留出更多空间 打开源代码CirclePageIndicator并找到变量mRadius 在第
  • Android 崩溃报告库(Froyo 之前)[重复]

    这个问题在这里已经有答案了 你知道 Android 的崩溃报告库吗 我不想花很多时间来编写自己的报告系统 输出可以发送到电子邮件或某种服务器 我知道 Google 在 Froyo 中引入了崩溃报告 但我想要一些适用于旧版本系统的东西 我们来
  • 如何在Android应用程序的同一屏幕上显示文本框的值,就像whatsapp一样

    这是我的主文件 我在其中调用按钮上的单击事件来传递值 protected void onCreate Bundle savedInstanceState super onCreate savedInstanceState setConten
  • Android BLE - 如何分块读取大特征值(使用偏移量)?

    我正在使用 Android SDKandroid 蓝牙 and android 蓝牙 le APIs 我想实现一个应用程序 发挥核心作用 并连接到 BLE 外设以读取特征值和描述符 应用程序需要读取的特征值较大 因此需要分块连续读取 我对如
  • 如何在phonegap上使用GCM处理android中的多个推送通知

    当推送通知到达时 如果用户无法查看该通知 他收到另一条通知 之前的通知正在更新为新的 但它不应该更新为最新的 我们需要单独显示每个通知 这可以使用 GCM 吗 我已经使用Phonegap来开发应用程序 PushPlugin 支持在有效负载中
  • WebView2 在没有 WebView2 运行时的情况下工作

    我们尝试在没有 WebView2 运行时的情况下使用 WebView2 因为它的大小为 100 MB 并将其分发给客户端 它在 2 台 PC 上进行了测试 两者都有相同版本的 Edge 在 PC1 上 如果没有 WV2 运行时 WebVie
  • 即使获得平台签名也无法读取系统文件

    我已经构建了一个自定义 Android ROM 我已经使用平台签名签署了我的应用程序并添加了android sharedUserId android uid system 在清单文件中 我的应用程序被授予所有 签名 和 系统 级别权限 但不
  • android 从图库中选择图像

    我想从图库创建一个图片选择器 我使用代码 intent new Intent Intent ACTION PICK android provider MediaStore Images Media EXTERNAL CONTENT URI
  • Android - 测试另一个活动是否已开始

    我正在尝试测试以下场景 在自动完成文本视图中输入一个字母 向下滚动并选择其中一个选项 然后单击一个按钮 单击按钮将启动一个新活动 我想检查新活动是否已经开始 这是测试方法 public void testSpinnerUI mActivit
  • Android 上的 Jetty 上的 Jersey 抛出 ContainerException:“不存在 WebApplication 提供程序”

    我正在尝试在 Android 上的 Jetty 上运行 Jersey 我创建了一个 Android 它使用 Jersey Servlet 实例化 Jetty 服务器 无论如何 当我启动 Jetty 并访问 REST 资源时 在我的例子中 h
  • 如何在高速缓存中存储图像

    我对此完全空白 我想从 URL 下载图像 并且必须将其存储在内部 以便下次我不需要连接到网络 而是从缓存中检索它 但我不知道该怎么做 谁能帮我提供一个代码片段 import java io BufferedInputStream impor
  • 使用 Android 的 Mobile Vision API 扫描二维码

    我跟着这个tutorial http code tutsplus com tutorials reading qr codes using the mobile vision api cms 24680关于如何构建可以扫描二维码的 Andr
  • 如何在android中获取当前一周的所有天数?

    我想在字符串数组中获取本周的所有日期 我怎样才能做到这一点 提前致谢 I think你想要这样的东西 假设你总是想要从星期一开始的几周 以及 MM dd yyyy 的日期格式 DateFormat format new SimpleDate
  • 从 Android 中的过渡动画中排除 BottomNavigation

    我一直在四处寻找 但找不到有助于解决这个特定问题的答案 我的应用程序有一个自定义滑入 滑出效果 如下所示 Intent intent new Intent getApplicationContext MyActivity class sta

随机推荐

  • 即时渲染视图

    我正在开发一个 ASP NET MVC 应用程序 它将向用户发送一封确认电子邮件 对于电子邮件本身 我想创建一个视图 然后呈现该视图并使用 NET 邮件对象发送它 我如何使用 MVC 框架来做到这一点 你基本上需要使用IView Rende
  • 记录在可枚举相等性上返回 false [重复]

    这个问题在这里已经有答案了 测试新的 C 9 记录 并希望澄清为什么序列相等在记录上不起作用 假设我有以下代码 public record Person string FirstName string LastName 以下代码将返回 tr
  • 如何在没有服务器或 UI 的情况下从嵌入式报表定义生成 PDF?

    独立的可执行文件是否可以生成报告并将其输出为 PDF 或报告查看器提供的其他导出选项之一 而不显示 ReportViewer 控件 报表定义应嵌入到可执行文件中 并且不应使用 Reporting Services Web 服务 实际上你根本
  • 如何以类似热图的方式在 ggplot2 中的地图顶部绘制样方计数

    我试图获取一个 shapefile 和其中包含的点 并最终得到 shapefile 点的绘图 然后最终在顶部覆盖有一定量的 alpha 透明度的样方分析 我尝试并想出了这个应该可以使用的示例 library ggplot2 library
  • Google Colaboratory 10-15 分钟后断开连接

    我正在尝试在 Google colab 上训练我的深度学习模型 他们提供免费的 K80 GPU 我了解到它一次可以使用12小时 然后你必须重新连接它 但我的连接在 10 15 分钟后丢失 并且无法重新连接 它停留在初始化状态 这里有什么问题
  • Spring Kafka 客户端 SSL 设置

    我的设置 JDK 11 0 6 Spring Boot 2 2 4 RELEASE 春天卡夫卡2 4 1 我已经在明文中验证了我的 Zookeeper Kafka 客户端应用程序 一切正常 我还使用 Kafka 客户端工具验证了我的密钥库
  • 如何更改 Netbeans 中 toString() 代码片段的功能

    Netbeans IDE 中是否有可能如何从上下文菜单中更改其在 into toString Alt Shift S 代码片段功能中的行为 我想在最终生成的 toString 方法中包含从类及其超类中选择的方法 主要是吸气剂 我不知道是否可
  • 在tensorflow 2.0中的自定义损失和梯度代码中获取全无梯度

    我正在尝试在tensorflow 2 0中编写一个非常基本的损失函数 总之 我有 5 个类 我想使用一种热编码进行训练 而不对其中任何一个进行分组 我希望我的模型能够用 5 个类别中每个类别的值来预测每个输入 之后 我想尝试获取两个最高值
  • EF4.3 代码优先、MVC、在 POST 操作中附加后延迟加载

    我在 MVC 3 应用程序中使用带有 Code First 的 Entity Framework 4 3 我有一个 POST 操作 它获取一个实体作为其参数 然后将该实体标记为已修改以更新数据库 它是一个具有对文件类型的引用的文档实体 Ht
  • 为什么 Visual Studio 的智能感知显示私有成员和函数? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用 Excel 更新 mySQL 数据库中的列

    我有一张桌子 大约有 10 000 条客户记录 表结构如下所示 ClientID 名 LastName 电话号码 我正在尝试更新电话号码包含更新的 Excel 文件的列 它只有两列 ClientID 电话号码 我的cpanel安装了phpm
  • 如何查找使用 NDK 编写的 C++ Android 应用程序的内存使用情况

    我正在使用 NDK 将用 C 编写的游戏移植到 Android 我需要知道它运行时消耗了多少内存 我正在寻找以编程方式查找用 C 编写的 Android 应用程序的内存使用情况 这两个函数基于 JonnyBoy 的答案 static lon
  • 如何使用 Roslyn 获取范围内的所有可见局部变量名称 (Microsoft CodeAnalysis)

    请注意 这与运行时反射 元信息无关 我正在编写 Roslyn CSharpSyntaxVisitor 的具体实现 实施 VisitIdentifierName 时 public override SyntaxNode VisitIdenti
  • ASP.NET MVC 4 jQuery 验证脚本包不起作用

    我最近升级了一个网站以使用 ASP NET MVC 4 并使用以下代码来呈现我的 jQuery 验证包 但我收到以下错误 Microsoft JScript runtime error Object doesn t support prop
  • vim - C++ 构造函数初始化列表的缩进问题

    我用的是vim 7 0 我希望以下代码按以下方式缩进 初始化列表与构造函数的缩进相同 A A a1 10 a2 10 a3 10 根据 vim 帮助 这可以通过设置来完成 set cino i0 但是这个设置会产生 只有 a1 正确缩进 A
  • 使用 addEventListener 时 setTimeout 出现问题

    我有一个 vimeo 视频 我想在单击按钮后播放 3 秒 我可以让视频在点击时播放 但我似乎无法在正确的位置获得 setTimeout 有什么建议吗 var iframe1 document getElementById prelearn
  • 如何在 Android Studio 或 Visual Studio Code 中查找未使用的 flutter 类

    由于客户对应用程序的需求变化很快 我有近200个dart文件 其中很多都没有使用 除了手动一一搜索之外 还有什么办法可以找到未使用的类吗 在 Android Studio 中 我可以通过使用 检查代码 功能找到未使用的 java 或 kot
  • ASP.NET MVC - 将 PartialView 与另一个对象一起返回到 Ajax

    我正在使用 ASP NET MVC 编写一个单页 ajax 应用程序 大量使用 jQuery 我在整个应用程序中执行类似以下操作 JS ajax type GET url Home GetSomePartialView data someA
  • 在稀疏矩阵中取对数函数的有效方法

    我有一个大的稀疏矩阵 我要拿log4对于该稀疏矩阵中的所有元素 我尝试使用numpy log 但它不适用于矩阵 我也可以逐行取对数 然后我用新的一排压碎旧的一排 Assume A is a sparse matrix Linked List
  • 如何更改Android中Webview的字体?

    我想将 webview 的默认字体更改为自定义字体 我正在使用 webview 开发 Android 的双语浏览器应用程序 我尝试通过将自定义字体放入资产中来获取自定义字体的实例 但仍然无法将 webview 的默认字体设置为我的字体 这是