@Android在WebView中显示/ res /可查看

时间:2010-04-13 15:25:21

标签: android webview drawable

我将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中的图片?

7 个答案:

答案 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图片,如果使用hdpimdpi,我也会获得相应的图片。 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中的原始文件。