Android WebView 显示纯文本而不是 html

2024-04-14

首先,我想说这只是 Android 2 及更早版本上的问题(4 似乎不受影响,我没有测试 3)。

我有一个WebView从字符串加载 html。 HTML 看起来像这样:

<html>  
    <head>
        <link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' />
    </head>
    <body>
        <h1>Hello World</h1>
    </body>
</html>

您可以看到 css 文件如下所示:

body {
    font-family: "Lucida Console", "Lucida Sans Typewriter", Monaco, "Bitstream Vera Sans Mono", monospace;
}
h1 {
    border-bottom: 3px solid #ccc;
}

The WebView代码如下所示:

final WebView webview = new WebView(this);
setContentView(webview);
final String result = "<html><head><link rel='stylesheet' type='text/css' href='http://www.robotsidekick.com/test.css?rev=0' /></head><body><h1>Hello World</h1></body></html>";
webview.loadData(result, "text/html", Encoding.UTF_8.toString());

会发生什么

我看到html代码在WebView就好像我已将 mime 类型设置为纯文本一样。

我的期望(以及 Android 4.x 中会发生什么)

我看到 html 中WebView

要显示我所看到的症状,必须满足以下几点:

  • Android 2.x(我使用的是2.3.7和2.2)
  • css 必须通过 url 访问href="http://www.robotsidekick.com/test.css?rev=0"相对于href="test.css"(但是如果它是一个真正的css文件并不重要href="http://www.thisisnotarealurl.fake/test.css?rev=0导致同样的问题)
  • css必须有一个get参数?rev=0,但它是什么并不重要

还想指出以下内容没有什么区别:

  • 使用适当的"代替'在 HTML 中
  • 拥有link标签是否自行关闭
  • css的内容
  • 添加文档类型<!DOCTYPE html>到 HTML

改变webview.loadData对此行:

webview.loadData(URLEncoder.encode(result).replaceAll("\\+", " "), "text/html", Encoding.UTF_8.toString());

解决了这个问题。对我来说,带有未编码的相对路径似乎很奇怪?不会造成问题,而带有未编码的虚假网址?确实会引起问题。

还觉得奇怪的是WebViewAndroid 的后续版本中发生了足够大的变化,以至于我们不再需要对 html 进行编码?听起来很可疑。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android WebView 显示纯文本而不是 html 的相关文章

随机推荐

  • 如何在Eclipse中添加JBoss服务器?

    我是 JBoss 的新手 刚刚安装了 Eclipse 我已将一个项目添加到工作区 现在我想将其部署到 Jboss 服务器 然而 在新的服务器运行环境列表中 JBoss 不可用 我正在使用以下 Eclipse 版本 面向 Web 开发人员的
  • 从 UIViewController 返回 NSString

    我想返回一个NSString 从一个名为InputUIViewController的UIViewController 到之前的一个名为CallerUIViewController的UIViewController 它启动了InputUIVi
  • F# 图表示例

    我想使用内置功能或免费库在 F 中做一些基本的图表 我会对一个非常基本的例子感到非常非常满意 如果可能的话 饼图 示例数据 John 34 Sara 30 Will 20 Maria 16 其中整数是饼图中要表示的百分比 我最近安装了 VS
  • 使用 D3 在地图上绘制点

    我正在尝试使用基于纬度和经度的 D3 地理库在地图上绘制一些点 但是 当我将这些值传递到投影函数时 它会导致坐标超出 SVG 图像的范围 我的代码基于文档中提供了这个示例 http bl ocks org mbostock 3757119
  • 为什么在 Angular 指令的链接函数中“this”为空?

    我正在尝试使用 TypeScript 和 Angular 编写动态模板 但由于某种原因 this 关键字始终为空 因此我无法访问我的私有成员 compile 有任何想法吗 非常感谢 指示 namespace ROD Features Pla
  • 使用带有函数和 mixins 的对象(而不是原型)是否会带来一些性能损失? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在 JavaScript 中执行 OOP 的一种常见方法是使用带有附加函数的对象 而不是使用内置的原型 构造函数和new操作员 Mixin 通常
  • 我的项目名称下出现错误,但不存在错误?

    基本上发生的事情是我的项目名称下出现一个错误 小红十字 就好像某个地方有错误一样 当我查看我的项目时 没有错误 当我运行我的代码时 没有错误 它工作得很好 有人可以向我解释一下如何修复它吗 这意味着什么 我正在使用 Eclipse Luna
  • Kubernetes - Pod 内的容器通信使用名称而不是“localhost”?

    来自 Kubernetesdocs http kubernetes io docs user guide pods Pod 中的应用程序都使用相同的网络命名空间 相同的 IP 和端口空间 因此可以 find 彼此并使用本地主机进行通信 是否
  • Google 登录 - 刷新时注销

    我进行了以下设置 service googleService q function q var self this this load function var deferred q defer gapi load auth2 functi
  • 选择给定点集中最远点的子集

    想象一下 你有一个 3 维 n 个点的集合 S 任意两点之间的距离是简单的欧几里得距离 您想要从该集合中选择 k 个点的子集 Q 以使它们彼此相距最远 换句话说 不存在 k 个点的其他子集 Q 使得 Q 中所有成对距离的最小值小于 Q 中的
  • 如何自动更新最大值?

    在串行代码中 更新最大值可以简单地通过以下方式完成 template
  • Winforms:SuspendLayout/ResumeLayout 还不够?

    我有一个包含一些 自定义控件 的库 本质上 我们有自己的按钮 圆角面板和一些带有一些自定义油漆的分组框 尽管 OnPaint 方法中存在 数学 但控件还是相当标准的 大多数时候 我们所做的只是绘制圆角并向背景添加渐变 我们使用 GDI 来实
  • ADO.NET 实体框架中的乐观并发

    I found MSDN 文章 http msdn microsoft com en us library bb738618 v vs 90 aspx描述了 EF 在保存更改时如何处理并发 默认情况下 对象服务保存对象 对数据库的更改没有
  • 查找 javascript 数组中的空索引列表

    Javascript 有没有办法找到数组为空或不包含 x 的索引 x x 会返回类似 1 2 4 5 6 我尝试过这样的事情 empty roster findIndex obj gt Object keys obj length 0 但是
  • 如何在 _layout.cshtml 中使用 data-ng-view

    我正在尝试使用 Angular 创建 MVC 应用程序 我的应用程序有通用的页眉和页脚 所以我将其添加到 layout cshtml中 应用程序中有一些静态页面 因此我想使用 Angular 路由来加载它 这是我的 layout cshtm
  • JQuery UI Datepicker:如何添加下一年/上一年按钮

    我使用通过下拉菜单选择年份的功能 我用它来设置至少 18 岁的人的生日 到目前为止 它运行得很好 我已经使用这些参数进行了设置 datepicker datepicker changeMonth true changeYear true d
  • git diff HEAD 与 git diff --staged 之间有什么区别?

    有什么区别git diff HEAD and git diff staged 我尝试了两者 但都给出了相同的输出 假设这个输出为git status git status On branch master Changes to be com
  • 如何在android中使用xml布局进行绘制

    我正在尝试完成开发人员页面上给出的 android 示例 它提供了两种在画布上绘图的方法 第一种方法是使用名为 CustomDrawableView 的类 如下所示 public class CustomDrawableView exten
  • 如何清除 WPF Frame 控件托管的整个导航历史记录

    在 WPF 应用程序中 Frame 控件用于托管 导航页面 我想清除导航历史记录 有 NavigationService RemoveBackEntry 方法可用于清除历史记录的向后部分 但是前向导航历史又如何呢 这部分怎么清除呢 最佳实践
  • Android WebView 显示纯文本而不是 html

    首先 我想说这只是 Android 2 及更早版本上的问题 4 似乎不受影响 我没有测试 3 我有一个WebView从字符串加载 html HTML 看起来像这样 h1 Hello World h1 您可以看到 css 文件如下所示 bod