@Android显示/ res /在WebView中可见

我将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", ""); 

其中的string的html有这样的事情:

 <html><head> <h1>Here is the image</h1> <img src="my_image.png" /> </head><html> 

问题是,该图像的src属性应该指向/res/drawable的图像?

Solutions Collecting From Web of "@Android显示/ res /在WebView中可见"

这在android 2.2中工作

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

其中q1.png位于res / drawable-hdpi文件夹中

我承认我对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"/> 

那对你有用吗?

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 ,我也得到适当的一个。 Androidparsingfile:///android_res/drawable/stats_btn.png到我在我的项目中的以下资源之一。

  • ./res/drawable-ldpi/stats_btn.png
  • ./res/drawable-hdpi/stats_btn.png
  • ./res/drawable-mdpi/stats_btn.png

从我的testingpath中,“file:///android_res/drawable/q1.png”仅适用于2.2+。 为2.1给出一个文件未find错误。 将资源移动到资产将会起作用,但如果要使用可绘制的function(意味着您需要每个文件夹中的图像的副本…),则这并不是真的可行。

涉及file://的解决scheme可能无法在Android 4.0中运行。 看到这个问题的答案。 一个可行的方法是在这里的答案。

我有完全相同的问题,但既不放置图像文件res/drawable (我首先必须创build,我必须有drawable-hdpi,-ldpi和-mdpi已经存在)或使用file:///asset/url为我工作。

这是我做的:

活动:

  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"); 

然后在res/drawable我放置banner300.jpg – 但它不显示。 有任何想法吗?

你加载可绘制就像你在代码中的任何地方… http://developer.android.com/guide/topics/resources/drawable-resource.html

 Resources res = getResources(); Drawable drawable = res.getDrawable(R.drawable.myimage); 

也使用Android的@MikeNereson,您只能直接访问资产目录和SDCard中的原始文件。