WebView,将本地.CSS文件添加到HTML页面?

在Android中我使用WebView来显示一个网页的一部分,至于我从互联网上使用HttpClient从Apache获取。 为了只从html中获得我想要的部分,我使用Jsoup。

String htmlString = EntityUtils.toString(entity4); // full html as a string Document htmlDoc = Jsoup.parse(htmlString); // .. as a Jsoup Document Elements tables = htmlDoc.getElementsByTag("table"); //important part 

现在我可以在WebView中加载tables.toString()并显示它。 现在我想链接一个CSS文件,我存储在我的资产文件夹内的这个页面。 我知道我可以有类似的东西

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

在我的HTML,但我怎么链接,所以它使用我已经存储在本地?

– -编辑 – –
我现在改成这样:

 StringBuilder sb = new StringBuilder(); sb.append("<HTML><HEAD><LINK href=\"file:///android_asset/htmlstyles_default.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>"); sb.append(tables.toString()); sb.append("</body></HTML>"); return sb.toString(); 

不知何故,我没有得到适用于页面的样式。 这是我使用的错误的位置path吗? 请帮帮我 ..

Seva Alekseyev是正确的,你应该存储在assets文件夹的CSS文件,但引用file:///android_asset/filename.css URL不工作。

还有另外一个解决scheme:将CSS放在assets文件夹中,用HTML进行操作,但通过相对path引用CSS ,并通过loadDataWithBaseURL()方法将HTML加载到WebView:

 webView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "utf-8", null); 

例如,你有styles.css文件,把它放到assets文件夹,创buildHTML并加载它:

 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); 

PS由于Peter Knego的回答,我已经find了这个解决scheme。

你不能在res存储任意文件 – 只有特定的资源types(可绘制,布局等)。 CSS应该转到assets文件夹。 然后你可以通过下面的URL来引用它: file:///android_asset/MyStyle.css

在相关的说明中,如果您没有将文件存储在资产文件夹中并想要使用相对path,Android上的Webview有时需要在相对path之前使用点斜线。

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

看到这个职位