2011-05-25 87 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/为前缀。

如果图片或文件不加载,请检查文件名的空白连字符和其他怪异的东西,并更改文件名。