Android WebView不加载本地css文件

时间:2014-01-27 19:06:10

标签: android html css web-applications webview

我正在使用Android中的应用程序,我正在使用包含css文件的本地html文件,但它不起作用,我不知道为什么。 Java代码是这样的:

view.loadDataWithBaseURL("file:///android_asset/", content, "text/html", "UTF-8", null);

HTML代码就像这样

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="">


<title>Starter Template for Bootstrap</title>

<!-- Bootstrap core CSS -->
<link href="../css/main.css" rel="stylesheet">
<style>



</style>

路径是正确的,Eclipse WebBrowser显示html页面正确但如果我在我的设备上测试它没有样式。 Logcat引发错误“Unknown Chromium Error:-6” 非常感谢提前

3 个答案:

答案 0 :(得分:4)

您无法在网页视图中引用此路径。您可能需要将css文件存储在assets文件夹中并动态引用它:

将CSS放在assets文件夹中,使用HTML进行操作,但是通过相对路径引用CSS,并通过loadDataWithBaseURL()方法将HTML加载到WebView:

webView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "utf-8", null);
E.g. you have styles.css file, put it to assets folder, create HTML and load it:

StringBuilder sb = new StringBuilder();
sb.append("<HTML><HEAD><LINK href=\"styles.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
sb.append(tables.toString());
sb.append("</body></HTML>");
webView.loadDataWithBaseURL("file:///android_asset/", sb.toString(), "text/html","utf-8", null); 

来自:WebView, add local .CSS file to an HTML page?

答案 1 :(得分:1)

在相关说明中,如果您将文件存储在assets文件夹中并想要使用相对路径,则Android上的Webview有时需要在相对路径之前使用点斜杠。

<LINK href="./styles/file.css" type="text/css" rel="stylesheet">

请参阅this post

答案 2 :(得分:0)

在您的情况下,错误-6表示 FILE_NOT_FOUND ,这可能是由于您设备上的访问权限问题造成的。

您可能需要将CSS文件放在HTML文件的同一文件夹下。出于安全考虑,webkit引擎在访问本地文件时将应用同域策略。即不允许访问不在主HTML文件的同一文件夹中的子资源文件(如CSS,JS,图像)。