Frage

Ich bin werfen HTML auf eine Webansicht zu machen. Im HTML Ich brauche ein Bild zu laden, dass ich in /res/drawable haben.

Ich habe /res/drawable/my_image.png und Code wie folgt aus:

final WebView browser = (WebView) findViewById(R.id.my_webview);
String html = new MyHelper(myObject).getHtml();
browser.loadDataWithBaseURL("", html, "text/html", "UTF-8", "");

Wenn der String html hat so etwas wie:

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

Die Frage ist, was soll das Bild src Attribut auf das Bild in /res/drawable beziehen sein?

War es hilfreich?

Lösung

Das funktioniert in Android 2.2

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

Dabei gilt q1.png in den res / ziehbar-hdpi Ordner

Andere Tipps

Ich gebe zu, ich weiß nicht viel über WebViews / HTML, aber es scheint, wie Sie den komplizierteren Weg für diese einnehmen. Es gibt einen einfachen Weg, um die HTML-Datei zu laden; legen Sie sie in Ihr Vermögen Ordner, und dann kann es bezeichnet werden wie folgt.

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

Offensichtlich Ihr Layout ist komplexer, wie Sie mehr als nur die WebView haben, so dass Sie nicht setContentView() direkt verwenden können, aber das ist die Grundidee. Dann wird ein Bild in dieser HTML-Datei zu verweisen, habe ich einen <img> Tag wie folgt:

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

Ist für Sie das?

user302750,

Ihre Methode ist falsch. res/drawable/banner300.jpg sollte file:///android_res/drawable/banner300.jpg sein.

banner300.jpg in einer der folgenden Stellen in Ihrem Projekt sein kann und Android wird die richtige für das Gerät automatisch laden Sie verwenden.

  • res/drawable/banner300.jpg
  • res/drawable-ldpi/banner300.jpg
  • res/drawable-mdpi/banner300.jpg
  • res/drawable-hdpi/banner300.jpg
  • res/drawable-xhdpi/banner300.jpg

Der assets Ordner ist für generische Ressourcen, dass Sie nicht verschiedene Versionen brauchen. Ein Beispiel könnte eine XSL-Vorlage, oder etwas in der Natur sein.

MikeNereson, Ihre Antwort auf Ihr Problem auch nicht richtig ist, sollten ziehbar Ressourcen im res Verzeichnis enthalten sein.

Hier ist ein Beispiel aus meinem eigenen Projekt. I-Ausgang html, genau wie folgt aus:

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

Wenn ein ldpi Gerät, bekomme ich das ldpi Bild, wenn hdpi oder mdpi verwendet wird, ich die passenden für diejenigen, auch bekommen. Android Entschlüssen file:///android_res/drawable/stats_btn.png auf eine der folgenden Ressourcen, dass ich in meinem Projekt haben.

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

Von meinen Tests der Weg, "file: ///android_res/drawable/q1.png" funktioniert nur mit Version 2.2 oder höher. Für 2.1, die eine Datei nicht gefunden Fehler gibt. Das Verschieben der Ressource Vermögenswerte funktionieren wird, aber das ist nicht wirklich möglich, wenn Sie die Verwendung der ziehbar Funktionen machen wollen (dh Sie können eine Kopie des Bildes in jedem Ordner benötigen würde ...).

Antworten beteiligt file: // URLs können nicht mehr als von Android 4.0. Siehe Antwort auf diese Frage . Eine Art und Weise, dass Wille Arbeit in der Antwort ist hier .

Ich habe genau das gleiche Problem, aber weder die Bilddatei in res/drawable platzieren (die ich zuerst erstellen musste, ich Hust ziehbar-hdpi hatte, -ldpi und -mdpi bereits bestehenden) oder über die file:///asset/ URL für mich gearbeitet.

Hier ist, was ich tun:

Aktivität:

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

Dann in res/drawable legte ich die banner300.jpg - aber es wird nicht angezeigt. Irgendwelche Ideen?

Sie die Drawables wie Sie laden würde nirgendwo anders in Ihrem Code ... http://developer.android.com/guide/topics/resources/drawable -resource.html

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

auch @MikeNereson mit Android, können Sie nur zugreifen, direkt Raw-Dateien, die in dem Aktivverzeichnis und SD-Karte befinden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top