首先,我要说这只是 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;
}
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 中会发生什么
我在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添加文档类型