如何将android资产css文件加载到android WebView URL

时间:2015-07-20 12:27:11

标签: android html css webview android-webview

其实我想从互联网链接加载完整的网站,但我想从移动设备加载css文件(不是从互联网上加载)。因为我想使用内部本地css文件加载所有页面。

示例:

<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" href="dist/css/bootstrap.min.css" />
        <link rel="stylesheet" href="dist/css/font-awesome.min.css" />
    </head>
</html>

所以我想加载&#34; bootstrap.min.css &#34;和&#34; font-awesome.min.css &#34;仅来自移动存储器。

我的Android代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    String url = "http://www.MySiteName.com/";
    view = (WebView) this.findViewById(R.id.webView);

    view.getSettings().setJavaScriptEnabled(true); // Enable JavaScript Support
    view.setWebViewClient(new WebViewClient()); // Links open or Navigate in same webView not in Browser

    view.loadUrl(url);
}

2 个答案:

答案 0 :(得分:7)

请将CSS放在assets文件夹中,并通过相对路径引用CSS,并通过loadDataWithBaseURL()方法将HTML加载到WebView: 如果您的css文件名是 mycss.css

StringBuilder data = new StringBuilder();
data .append("<HTML><HEAD><LINK href=\"mycss.css\" type=\"text/css\" rel=\"stylesheet\"/></HEAD><body>");
data .append(tables.toString());
data .append("</body></HTML>");
webView.loadDataWithBaseURL("file:///android_asset/", data .toString(), "text/html", "utf-8", null);

谢谢

答案 1 :(得分:6)

因为另外两个答案只是复制意大利面而我碰巧有同样的问题,我会帮助你解决问题:

您需要在html文件的head部分指定文件路径。 请注意 href

之后的部分
<!DOCTYPE html>
<html lang="en">
    <head>
        <link rel="stylesheet" href="file:///android_asset/bootstrap.min.css" />
        <link rel="stylesheet" href="file:///android_asset/font-awesome.min.css" />
    </head>
</html>

我无法理解为什么其他海报只是复制和粘贴,甚至没有读到你想告诉他们的内容。

我希望这会有所帮助。

请注意,您的资源文件夹的名称可以不同。