我将HTML投放到webview进行渲染。在HTML中我需要加载/res/drawable
中的图像。
我有/res/drawable/my_image.png
和代码如下:
final WebView browser = (WebView) findViewById(R.id.my_webview);
String html = new MyHelper(myObject).getHtml();
browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");
字符串html
具有以下内容:
<html><head>
<h1>Here is the image</h1>
<img src="my_image.png" />
</head><html>
问题是,该图片src
属性应该指代/res/drawable
中的图片?
答案 0 :(得分:30)
这适用于android 2.2
<img src = "file:///android_res/drawable/q1.png" />
其中q1.png位于res / drawable-hdpi文件夹中
答案 1 :(得分:5)
我承认我对WebViews / HTML了解不多,但看起来你正在采取更复杂的路线。有一种简单的方法来加载HTML文件;把它放在你的资产文件夹中,然后可以参考如下。
WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);
显然你的布局更复杂,因为你不仅仅是WebView,所以你不能直接使用setContentView()
,但这是基本的想法。然后,为了引用该HTML文件中的图像,我使用了<img>
标记,如下所示:
<img src="res/drawable/icon.png"/>
这对你有用吗?
答案 2 :(得分:3)
user302750,
您的方法不正确。 res/drawable/banner300.jpg
应为file:///android_res/drawable/banner300.jpg
。
banner300.jpg
可以位于项目的以下位置之一,android会自动为您正在使用的设备加载正确的位置。
res/drawable/banner300.jpg
res/drawable-ldpi/banner300.jpg
res/drawable-mdpi/banner300.jpg
res/drawable-hdpi/banner300.jpg
res/drawable-xhdpi/banner300.jpg
assets
文件夹用于您不需要不同版本的常规资源。一个例子可能是XSL模板,或者那种性质的东西。
MikeNereson,您对问题的回答也不正确,可绘制的资源应该包含在res
目录中。
这是我自己项目的一个例子。我输出html,完全是这样的:
<img src="file:///android_res/drawable/stats_btn.png"/>
如果使用ldpi
设备,我会获得ldpi
图片,如果使用hdpi
或mdpi
,我也会获得相应的图片。 Android将file:///android_res/drawable/stats_btn.png
解析为我项目中的以下资源之一。
./res/drawable-ldpi/stats_btn.png
./res/drawable-hdpi/stats_btn.png
./res/drawable-mdpi/stats_btn.png
答案 3 :(得分:2)
从我的测试中,路径“file:///android_res/drawable/q1.png”仅适用于2.2+。对于2.1,给出文件未找到错误。将资源移动到资源会起作用,但如果您想要使用可绘制的功能(这意味着您需要在每个文件夹中复制图像......),那么这是不可行的。
答案 4 :(得分:2)
涉及file://网址的答案可能不再适用于Android 4.0。请参阅this question的答案。一种可行的方法是答案here。
答案 5 :(得分:0)
我有完全相同的问题,但是没有将图像文件放在res/drawable
(我首先必须创建,我必须有drawable-hdpi,-ldpi和-mdpi已经存在)或使用{{ 1}}网址为我工作。
以下是我的工作:
的活动:
file:///asset/
然后在 public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
String summary = "<html><body><div style=\"background:red; width:300px; height:50px;\"></div><img src=\"res/drawable/banner300.jpg\"/></body></html>";
mWebView.loadData(summary, "text/html", "utf-8");
我放置了banner300.jpg - 但它没有显示出来。有什么想法吗?
答案 6 :(得分:-3)
您可以像在代码中的任何其他位置一样加载drawable ... http://developer.android.com/guide/topics/resources/drawable-resource.html
Resources res = getResources();
Drawable drawable = res.getDrawable(R.drawable.myimage);
使用Android的@MikeNereson,您只能直接访问位于资产目录和SDCard中的原始文件。