17

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です。

4

7 に答える 7

30

これはAndroid 2.2で機能しました

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

q1.png は res/drawable-hdpi フォルダーにあります

于 2010-12-02T18:07:33.297 に答える
5

WebViews / HTMLについてはよくわからないことは認めますが、これにはもっと複雑なルートを取っているようです。HTMLファイルをロードする簡単な方法があります。アセットフォルダに入れると、次のように参照できます。

WebView webView = new WebView(this);
webView.loadUrl("file:///android_asset/index.html");
setContentView(webView);

setContentView()明らかに、WebViewだけではなく、直接使用できないため、レイアウトはより複雑ですが、それが基本的な考え方です。次に、そのHTMLファイル内の画像を参照するために<img>、次のようなタグを使用しました。

<img src="res/drawable/icon.png"/>

それはあなたのために働きますか?

于 2010-04-13T15:50:16.080 に答える
3

ユーザー302750、

あなたの方法は正しくありません。 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
于 2012-01-06T02:47:32.403 に答える
2

私のテストから、パス「file:///android_res/drawable/q1.png」は2.2以降でのみ機能します。2.1 の場合、ファイルが見つからないというエラーが発生します。リソースをアセットに移動することはできますが、ドローアブル機能を利用したい場合は現実的ではありません (各フォルダーに画像のコピーが必要になることを意味します...)。

于 2011-03-31T15:19:20.093 に答える
2

file:// URL を含む回答は、Android 4.0 以降では機能しない可能性があります。この質問への回答を参照してください。機能する方法は、こちらの回答にあります。

于 2012-05-21T10:16:34.637 に答える
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 = "<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 を配置しましたが、表示されません。何か案は?

于 2010-06-08T22:53:23.107 に答える
-3

コード内の他の場所と同じようにドローアブルをロードします... http://developer.android.com/guide/topics/resources/drawable-resource.html

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

また、Androidを使用する@MikeNeresonでは、アセットディレクトリとSDカードにあるrawファイルにのみ直接アクセスできます。

于 2011-07-01T19:33:08.447 に答える