安卓WebView无法加载本地CSS文件

4

我正在开发一个Android应用,使用了本地html文件,并且包含css文件。但是它不起作用,而我也不知道为什么。 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 抛出错误“未知的Chromium错误:-6”。 非常感谢。

3个回答

4

您不能在WebView内引用此路径。您可能需要将CSS文件存储在资产文件夹中,并动态引用它:

将CSS放入资产文件夹中,使用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中如何向HTML页面添加本地CSS文件?


1

顺带提一下,如果您没有将文件存储在资产文件夹中并且想使用相对路径,则在Android上使用Webview时有时需要在相对路径之前添加点斜杠。

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

看见了这篇文章:this post

0
在您的情况下,错误代码-6表示FILE_NOT_FOUND,这可能是由于设备上的访问权限问题引起的。
您可能需要将CSS文件放在HTML文件的同一文件夹中。出于安全考虑,当访问本地文件时,Webkit引擎会应用同域策略。即不允许访问不在主HTML文件所在文件夹中的子资源文件(如CSS、JS、图像)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接