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

我将HTML投射到webview进行渲染。 在HTML中,我需要加载/res/drawable的图像。

我有/res/drawable/https://stackoverflow.com/questions/2630829/android-display-res-viewable-in-webview/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含义如下:

  

Here is the image

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

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

这适用于android 2.2

  

其中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文件中的图像,我使用了一个标签,如下所示:

  

那对你有用吗?

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,完全是这样的:

  

如果使用ldpi设备,我会得到ldpi图像,如果使用hdpimdpi ,我ldpi得到ldpi图像。 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

从我的测试中,路径“file:///android_res/drawable/q1.png”仅适用于2.2+。 对于2.1,提供文件未find错误。 将资源移动到资源将起作用,但如果您想要使用可绘制function(这意味着您需要每个文件夹中的图像副本……),这是不可行的。

涉及file:// URL的答案可能不再适用于Android 4.0。 请参阅此问题的答案。 一种可行的方法就是答案。

我有完全相同的问题,但既没有将图像文件放在res/drawable (我首先必须创建,我必须有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 = "
"; mWebView.loadData(summary, "text/html", "utf-8");

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

您可以像在代码中的任何其他位置一样加载drawable … http://developer.android.com/guide/topics/resources/drawable-resource.html

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

还有@MikeNereson使用Android,你只能直接访问位于assets目录和SDCard中的原始文件。