2014-01-27 74 views
2

我正在使用Android中的應用程序,其中我使用的是包含css文件的本地html文件,但它不起作用,我不知道爲什麼。 Java代碼是這樣的:Android WebView不加載本地的css文件

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的web瀏覽器顯示HTML頁面正確的,但如果我上測試它我的設備沒有樣式。 Logcat引發錯誤「Unknown Chromium Error:-6」 非常感謝

回答

4

您無法在webview中引用此路徑。您可能需要將您的css文件存儲在assets文件夾中並動態引用它:

將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, add local .CSS file to an HTML page?

0

在你的情況下,錯誤-6意味着FILE_NOT_FOUND,這可能是由於訪問權限問題,您的設備上。

您可能需要將CSS文件放在HTML文件的同一文件夾下。出於安全考慮,webkit引擎在訪問本地文件時將應用同域策略。即訪問不在主HTML文件的相同文件夾中的子資源文件(如CSS,JS,圖像)是不允許的。

1

與此相關的,如果你不存儲在資產文件夾中的文件,並要使用相對路徑,網頁視圖在Android上有時需要相對路徑前點斜線。

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

this post

相關問題