在android中,我使用WebView来显示我使用Apache的HttpClient从互联网上获取的网页的一部分。为了只包含我想要的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
现在,我可以加载tables.toString()WebView并显示它。现在,我想将此页面链接到存储在我的Assets文件夹中的CSS文件。我知道我可以有类似的东西
tables.toString()
<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();
我不知何故没有将样式应用于页面。我使用的位置路径错误吗?请帮我 ..
SevaAlekseyev是正确的,您应该将CSS文件存储在assets文件夹中,但是按file:///android_asset/filename.cssURL 引用对我不起作用。
assets
file:///android_asset/filename.css
还有另一种解决方案:将CSS放在assets文件夹中,使用HTML进行操作,但是 通过相对路径引用CSS ,并通过loadDataWithBaseURL()方法将HTML加载到WebView :
loadDataWithBaseURL()
webView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "utf-8", null);
例如,您有styles.css文件,将其放入assets文件夹,创建HTML并加载:
styles.css
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);