2011-05-25 71 views
47

我想在我的WebView到diplay局部圖像的局部圖像:Android的 - 在網頁視圖

String data = "<body>" + "<img src=\"file:///android_asset/large_image.png\"/></body>"; 
webview.loadData(data, "text/html", "UTF-8"); 

此代碼不顯示任何內容,而不是,:

webview.loadUrl("file:///android_asset/large_image.jpg"); 

這一個作品,但我需要有複雜的網頁,而不僅僅是一張圖片。

任何想法?

+0

更好地創建HTML文件,並把它的資產文件夾,並從資產文件夾 – 2011-05-25 16:57:57

回答

60

加載HTML文件在網頁視圖失蹤,把你的圖像資源文件夾,並使用HTML讀出的圖像文件。

<html> 
    <table> 
    <tr> 
     <td> 
     <img src="abc.gif" width="50px" alt="Hello"> 
     </td> 
    </tr> 
    </table> 
</html> 

現在加載一個HTML文件在網頁視圖

webview.loadUrl("file:///android_asset/abc.html"); 
+1

正是我所需要的,謝謝 – 2011-05-26 08:20:12

+0

完美的解釋... – Mihir 2012-08-07 07:30:49

+7

如果圖像在資產的其他文件夾中怎麼辦? – 2014-10-29 10:08:28

1

我覺得有一個\在你的代碼

String data = "<body>" + "<img src=\\"file:///android_asset/large_image.png\"/></body>";  
+1

訪問它有兩個「\」,Eclipse不希望編譯:■ 我發現了一個解決辦法: webview.loadDataWithBaseURL(「假:// w/t/f「,data,mimeType,encoding,null); 似乎loadData()是錯誤的...... – 2011-05-25 16:58:52

8

使用此方法。

mview.loadDataWithBaseURL(folder.getAbsolutePath(), content, "text/html", "windows-1252", ""); 

folder.getAbsolutePath()可以"file:///android_asset"或只是"/"

+1

這是什麼內容? – jhegedus 2016-09-13 11:06:17

+0

內容是真正的HTML文本,如 ... – 2016-10-06 16:35:22

25

一種方便的方法(經常被遺忘)是在HTML內容使用的base64嵌入式圖像。這也適用於移動Webkit瀏覽器(IOS,Android ..)。

使用此方法的一點是,您可以將圖像嵌入到HTML內容中,而不是與從webview到受限文件系統的圖像鏈接進行對抗。

<img src="data:image/jpg;base64,xxxxxxxxxxxxxxxxxxxxxxxxxxxx"/> 

    xxxxx = base64 encoded string of images bytes 

如果要提供(嵌入式的base64)圖像數據從文件系統,比如,你可以:

1)在Android中使用的ContentProvider - 這將提供的base64格式的圖像串。

<img src="content://.............."/> 

2),也可以預處理HTML與JSOUP或類似的DOM解析器(將其設置爲網頁視圖前)和調整得當Base64編碼的圖像圖片src。

此方法的缺點是將圖像轉換爲base64字符串,當然還需要將更大的HTML數據添加到webview中。

+2

嗨,你能給這個全行的例子: Derzu 2012-08-23 20:15:22

+0

這種技術是唯一有用的,如果WebView有loadDataWithBaseURl'基地址不是'file:// ...'。 – rds 2016-06-09 13:32:23

44

您也可以嘗試

String data = "<body>" + "<img src=\"large_image.png\"/></body>"; 

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

我認爲這是最快的方法,特別是如果你只需要顯示一個圖像。謝謝) – 2012-06-15 23:55:45

+0

我使用代碼生成html文件,並需要在資源文件夾中使用本地圖像。試過其他方法,但他們沒有工作。你的作品完美。 – Ray 2013-05-02 23:34:55

0

enter image description here

webView.loadDataWithBaseURL("file:///android_asset/", sourse, "text/html", "UTF-8", null); 
0

對我來說,最好的辦法是創造我.html文件與MS字中的所有文本和圖像,並將該文件保存爲.html文件並將.html文件和相應的附件文件夾複製到資產文件夾並將資產文件夾中的.html文件的地址複製到webview.loadUrl() ... 此處是你需要做的...

WebView webview = (WebView) findViewById(R.id.webView1); 

webview.loadUrl("file:///android_asset/learning1/learning1.htm"); 
0

Zain's solution爲我工作。我忘了補充我的文件夾WWW有HTML文件和css的其他子文件夾和圖像等

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

..

0

最簡單,最直接的方法是創建一個HTML編輯器HTML文件像kompozer或任何你喜歡的。

將您的html文件放在資產文件夾中,並致電webView.loadUrl(filename)。 assets文件夾還應該包含您在html文件中引用的所有圖片。

在HTML文件中提前更正圖像的路徑,只記錄純文件名。您傳遞給loadUrl的文件名必須以file:///android_asset/爲前綴。

如果圖片或文件不加載,請檢查文件名的空白連字符和其他怪異的東西,並更改文件名。