在Android中,如何从可绘制对象向WebView添加图像?

28

我想要某件东西:

s="
<body>

<img src='"+R.drawable.picture+"'>

</body>";

我该怎么做?


请查看关于 Html.ImageGetter 的这个问题的被接受的答案。 它们正是你想要的。 - Ridcully
可能是@Android display /res/viewable in WebView的重复问题。 - rds
4个回答

53

只有当我们的图片在您的/assets文件夹中时,您才能这样做。此外,您必须使用位于您资产文件夹内的baseUrl加载html。

您可以使用WebView.loadUrl()WebView.loadDataWithBaseURL()

webView.loadUrl("file:///android_asset/file.html");

或者

webView.loadDataWithBaseURL("file:///android_asset/", "<img src='file.jpg' />", "text/html", "utf-8", null);

(file.jpg 应该放在您的 assets 文件夹中)


18
webView.loadDataWithBaseURL 可以从 drawables 中加载图片。只需将 "file:///android_asset/" 替换为 "file:///android_res/drawable/" 即可。 - dumbfingers
@JonasAlves:你知道如何使用Android资源Drawable来进行webview.loadUrl技巧吗?就像<img src="file:///android/Resources/drawable/ic_menu_info_details.png"\>这样的东西?我不知道系统资源Drawable的路径在哪里。 - Luis A. Florit
尽管我读了几遍,但我错误地认为“在html中使用位于资产文件夹内的baseUrl来加载大部分内容”这一部分只有在您想要使用相对路径作为src属性时才需要。事实证明,出于某种奇怪的原因(安全性?),这实际上是必需的。仅使用src的完整URL是不够的。 - eselk
这是我唯一能用的 TAPI 26 变体。谢谢! - halxinate

51

经过一些试验,我发现以下的HTML适用于Android 2.3.1(但不适用于旧版本):

<img src="file:///android_res/drawable/example.png"/>

非常酷的一点是,图像文件实际上位于目录drawable-hdpi中,但资源管理器会在标准目录drawable中提供该图像。


1
你好! 你的解决方案在表格中无法工作:(: <tr> <td><img src="file:///android_res/drawable/terkep.png" style="float:left;"></td> </tr> - narancs
我刚刚用表格再次测试了一下,它在Android 2.3.1上运行良好。你有检查过Eclipse中项目的API版本吗? - Eric Obermühlner
1
对于我的情况,它是否适用于高于2.3.1的版本?我使用的是4.2.3,但它似乎不起作用。 - Abhijit Chakra

6
尝试这个:
 web_object.loadDataWithBaseURL("file:///android_res/drawable/", "<img src='test.jpg' />", "text/html", "utf-8", null);

不需要创建单独的HTML文件。

1
设置图片宽度为100%。
wv.loadDataWithBaseURL("file:///android_res/drawable/", "<img src='"+ url + "' style='width:100%' />", "text/html", "utf-8", null); 
    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().setDisplayZoomControls(false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接