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

use*_*572 37 html css resources android httpclient

在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
Run Code Online (Sandbox Code Playgroud)

现在我可以加载tables.toString()WebView并显示它.现在我想将我存储在我的资产文件夹中的CSS文件链接到此页面.我知道我可以拥有类似的东西

<LINK href="styles/file.css" type="text/css" rel="stylesheet">   
Run Code Online (Sandbox Code Playgroud)

在我的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();
Run Code Online (Sandbox Code Playgroud)

不知何故,我没有将样式应用于页面.是我使用的位置路径是错的吗?请帮我 ..

Ser*_*tov 71

Seva Alekseyev是对的,你应该将CSS文件存储在assets文件夹中,但是通过file:///android_asset/filename.cssURL 引用对我来说不起作用.

还有另一种解决方案:将CSS放在assets文件夹中,使用HTML进行操作,但是通过相对路径引用CSS,并通过以下loadDataWithBaseURL()方法将HTML加载到WebView :

webView.loadDataWithBaseURL("file:///android_asset/", htmlString, "text/html", "utf-8", null);
Run Code Online (Sandbox Code Playgroud)

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

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);
Run Code Online (Sandbox Code Playgroud)

PS我得到了这个解决方案,感谢Peter Knego的回答.


Sev*_*yev 7

您不能存储任意文件res- 只是特定的资源类型(drawables,layouts等).CSS应该转到该assets文件夹.然后您可以通过以下URL引用它:file:///android_asset/MyStyle.css

  • 您可以在res/raw中存储任意文件. (4认同)