首先,我想说这只是 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