2015-07-20 105 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> 

我不能讓我的身邊,爲什麼其他海報只是複製和粘貼甚至沒有讀什麼你試圖告訴他們頭上。

我希望這會有所幫助。

請注意您的資源文件夾的命名方式可能有所不同。

相關問題