我正试图在我的网页浏览中显示本地图片:
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 :(得分:66)
在Webview中加载Html文件并将您的图像放入资源文件夹并使用Html读取该图像文件。
<html>
<table>
<tr>
<td>
<img src="abc.gif" width="50px" alt="Hello">
</td>
</tr>
</table>
</html>
现在在Webview中加载该Html文件
webview.loadUrl("file:///android_asset/abc.html");
答案 1 :(得分:46)
您也可以尝试
String data = "<body>" + "<img src=\"large_image.png\"/></body>";
webView.loadDataWithBaseURL("file:///android_asset/",data , "text/html", "utf-8",null);
答案 2 :(得分:26)
一种方便的方法(经常被遗忘)是在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)或者您可以使用JSOUP或类似的DOM解析器(在将其设置为webview之前)预处理HTML并使用正确的base64编码图像调整图像src。
此方法的缺点是将图像转换为base64字符串所包含的开销,当然还包括将更大的HTML数据转换为webview。
答案 3 :(得分:8)
使用此方法。
mview.loadDataWithBaseURL(folder.getAbsolutePath(), content, "text/html", "windows-1252", "");
folder.getAbsolutePath()
可以是"file:///android_asset"
,也可以是"/"
答案 4 :(得分:2)
我认为您的代码中缺少\
String data = "<body>" + "<img src=\\"file:///android_asset/large_image.png\"/></body>";
答案 5 :(得分:0)
webView.loadDataWithBaseURL("file:///android_asset/", sourse, "text/html", "UTF-8", null);
答案 6 :(得分:0)
对我来说最好的方法是使用MS word中的所有文本和图像创建我的.html
文件,并将文件另存为.html
文件并复制.html
文件和将相应的附件文件夹放入assets文件夹,并将资产文件夹中.html文件的地址提供给webview.loadUrl()
...
这就是你需要做的......
WebView webview = (WebView) findViewById(R.id.webView1);
webview.loadUrl("file:///android_asset/learning1/learning1.htm");
答案 7 :(得分:0)
Zain's solution为我工作。我忘了添加我的文件夹 www ,其中包含HTML文件以及其他css和图像子文件夹等。
webView.loadDataWithBaseURL("file:///android_asset/www/",data , "text/html", "utf-8",null);
...
答案 8 :(得分:0)
最简单直接的方法是使用html编辑器创建一个html文件,如kompozer
或任何你喜欢的。
将您的html文件放在assets文件夹中,然后调用webView.loadUrl(filename)
。 assets文件夹还应包含您在html文件中引用的所有图片。
在html文件中提前纠正图像的路径,只记录纯文件名。传递给loadUrl的文件名必须以file:///android_asset/
为前缀。
如果图片或文件未加载,请检查空白,连字符和其他奇怪内容的文件名并更改文件名。
答案 9 :(得分:0)
我知道问题的答案正确,但是我将以有效的方式实施。
第1步在资产文件夹中创建一个HTML文件
ex:-imageLaod.html
注意:这里,在HTML文件中,我们通过提供 style =“ width:100%”
来实现全屏图像service.bindings.create(binding).then((binding) => {
console.log(binding);
// Send a JSON response indicating success
return {
status: 200,
data: {message: 'Binding created!'},
};
第2步将您的图片放在素材资源文件夹中。 (例如:yourimage.png)
步骤3在Java文件中放置以下代码。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<title>Load Image</title>
<style type="text/css">
h3{
color:blue;
}
</style>
</head>
<body>
<h3>This image loaded from app asset folder.</h3>
<img src="yourimage.png" style="width:100%" alt="companylogo"/>
</body>
</html>
就完成了。您可以看到具有WebView放大功能的全屏图像。
希望有帮助。
答案 10 :(得分:0)
除非您具有以下条件,否则图像不会加载:
webSettings.setAllowFileAccessFromFileURLs(true);
如果您使用的是html文件,则该文件应位于/ app / src / main中名为“ assets”的文件夹中。如果没有该文件夹,则进行创建。然后使用以下方法加载html文件:
myWebView.loadUrl("file:///android_asset/test.html");
如果将图像与html文件放在同一文件夹中,则可以在html文件中执行常规操作:
<img src='myimage.jpg' />