2015-07-20 107 views
1

其实我想从网络链接加载完整的网站,但我想加载从移动(不是来自互联网)的css文件。因为我想使用内部本地css文件加载所有页面。如何加载android资产css文件到android webview网址

例子:

<!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> 

所以在这里我要加载 “bootstrap.min.css” 及 “字体awesome.min.css” 只从移动存储。

我的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); 
} 
+0

在'Asset'中添加'css'文件并从中加载。那有什么问题? –

回答

4

请把CSS的资产文件夹,并通过loadDataWithBaseURL参考CSS的相对路径和负载的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); 

谢谢

+0

Thanx非常有帮助的答案。 – mifthi

+0

这工作完美。 –

0

塞瓦·阿列克谢耶夫是正确的,你应该存储CSS资产文件夹中的文件,但通过file:///android_asset/filename.css指向URL不起作用。

还有另一种解决方案:在资产的文件夹放CSS,做你的操作与HTML,但loadDataWithBaseURL()法是指通过CSS相对路径和负载的HTML网页视图:

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

例如你有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); 

P.S.我来到这个解决方案得益于Peter Knego's answer.

在这里看到:HERE

3

因为其他两个答案都只是复制面食和我碰巧有同样的问题,我会帮助你与我的解决方案:

您需要在html文件头部指定文件路径。 注重的部分后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> 

我不能让我的身边,为什么其他海报只是复制和粘贴甚至没有读什么你试图告诉他们头上。

我希望这会有所帮助。

请注意您的资源文件夹的命名方式可能有所不同。

相关问题