如何解决Android-Webview中的本地图片
| 我正在尝试在Webview中显示本地图像: 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\");
这个可以工作,但是我需要一个复杂的网页,而不仅仅是一张图片。
有任何想法吗 ?
解决方法
将HTML文件加载到Webview中,然后将图像放在资产文件夹中,并使用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\");
,您也可以尝试
String data = \"<body>\" + \"<img src=\\\"large_image.png\\\"/></body>\";
webView.loadDataWithBaseURL(\"file:///android_asset/\",data,\"text/html\",\"utf-8\",null);
,一种方便的方法(通常被遗忘)是在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解析器对HTML进行预处理(在将其设置为webview之前),并使用正确的base64编码图像来调整图像src。
此方法的缺点是将图像转换为base64字符串时的开销,当然也包括将较大的HTML数据转换为Webview时的开销。
,使用此方法。
mview.loadDataWithBaseURL(folder.getAbsolutePath(),content,\"windows-1252\",\"\");
folder.getAbsolutePath()
可以是\"file:///android_asset\"
,也可以是\"/\"
,我认为您的代码中缺少\\
String data = \"<body>\" + \"<img src=\\\\\"file:///android_asset/large_image.png\\\"/></body>\";
, webView.loadDataWithBaseURL(\"file:///android_asset/\",sourse,\"UTF-8\",null);
,对我而言,最好的方法是用MS Word中的所有文本和图像创建.html
文件,并将该文件另存为.html
文件,并将.html
文件和相应的附件文件夹复制到Assets文件夹中,并提供.html文件的地址在资产文件夹中to17ѭ...
这是您需要做的...
WebView webview = (WebView) findViewById(R.id.webView1);
webview.loadUrl(\"file:///android_asset/learning1/learning1.htm\");
,Zain的解决方案为我工作。我忘记添加包含HTML文件以及CSS和图像等其他子文件夹的文件夹www。
webView.loadDataWithBaseURL(\"file:///android_asset/www/\",null);
..
,最简单直接的方法是使用like20ѭ之类的html编辑器创建HTML文件,或者使用您喜欢的任何东西。
将您的html文件放在资产文件夹中,然后致电webView.loadUrl(filename)
。资产文件夹还应包含您在html文件中引用的所有图片。
预先以某种方式在html文件中更正图像的路径,即仅归档纯文件名。传递给loadUrl的文件名必须以“ 22”为前缀。
如果未加载图片或文件,请检查空白,连字符和其他奇怪内容的文件名,然后更改文件名。
,我知道问题的答案正确,但是我将以有效的方式实施。
步骤1在素材资源文件夹中制作一个HTML文件
例如:-imageLaod.html
注意:在HTML文件中,我们通过指定style =“ \” width:100%\“实现了全屏图像
<!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>
步骤2将您的图片放在素材资源文件夹中。 (例如:yourimage.png)
步骤3在Java文件中放置以下代码。
String folderPath = \"file:android_asset/\";
String fileName = \"loadImage.html\";
String file = folderPath + fileName;
WebView webView = findViewById(R.id.webview)
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
webView.loadUrl(file);
完成了。您可以看到具有WebView放大和缩小功能的全屏图像。
希望能帮助到你。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。