WebView, add local .CSS file to an HTML page?

后端 未结 3 1735
清酒与你
清酒与你 2020-11-28 04:00

In android I\'m using WebView to display a part of a webpage which I fetched from the internet using HttpClient from Apache. To only have the part I want from the html, I us

相关标签:
3条回答
  • 2020-11-28 04:01

    Seva Alekseyev is right, you should store CSS files in assets folder, but referring by file:///android_asset/filename.css URL doesn't working for me.

    There is another solution: put CSS in assets folder, do your manipulation with HTML, but refer to CSS by relative path, and load HTML to WebView by loadDataWithBaseURL() method:

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

    P.S. I've come to this solution thanks to Peter Knego's answer.

    0 讨论(0)
  • 2020-11-28 04:09

    On a related note, if you're not storing the file in the assets folder and want to use relative paths, Webview on Android sometimes requires dot-slash before relative paths.

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

    See this post

    0 讨论(0)
  • 2020-11-28 04:28

    You cannot store arbitrary files in res - just the specific resource types (drawables, layouts, etc.). The CSS should go to the assets folder instead. Then you can refer to it by the following URL: file:///android_asset/MyStyle.css

    0 讨论(0)
提交回复
热议问题