Domanda

sto gettando HTML a un WebView per il rendering. Nella necessità HTML ho per caricare un'immagine che ho in /res/drawable.

Ho /res/drawable/my_image.png e il codice come questo:

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

Quando la html String ha qualcosa come:

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

La domanda è: che cosa dovrebbe quell'attributo immagine src essere quello di fare riferimento all'immagine in /res/drawable?

È stato utile?

Soluzione

Questo ha funzionato in Android 2.2

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

dove q1.png è nei res / drawable-hdpi cartella

Altri suggerimenti

Ammetto che non so molto di WebViews / HTML, ma sembra che si sta prendendo il percorso più complicato per questo. C'è un modo semplice per caricare il file HTML; metterlo nella cartella vostri beni, e quindi può essere indicato come segue.

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

Ovviamente il layout è più complessa quando si dispone di più di una semplice WebView quindi non è possibile utilizzare direttamente setContentView(), ma questa è l'idea di base. Poi per fare riferimento a un'immagine in quel file HTML, ho usato un tag <img> in questo modo:

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

Fa il lavoro per voi?

user302750,

Il tuo metodo non è corretto. res/drawable/banner300.jpg dovrebbe essere file:///android_res/drawable/banner300.jpg.

banner300.jpg può trovarsi in una delle seguenti posizioni nel progetto, e Android caricherà automaticamente quello corretto per il dispositivo che si sta utilizzando.

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

La cartella assets è per le risorse generiche che non hai bisogno di diverse versioni di. Un esempio potrebbe essere un modello XSL, o qualcosa del genere.

MikeNereson, la risposta al vostro problema è anche corretto, risorse disegnabili dovrebbero essere contenuti nella directory res.

Ecco un esempio dal mio progetto. I output HTML, esattamente in questo modo:

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

Se si utilizza un dispositivo ldpi, ottengo l'immagine ldpi, se si utilizza hdpi o mdpi, ottengo quello appropriato per quelli pure. risolve Android file:///android_res/drawable/stats_btn.png a una delle seguenti risorse che ho nel mio progetto.

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

Dal mio test del percorso, "file: ///android_res/drawable/q1.png" funziona solo con 2.2+. Per 2.1 che dà un file non trovato errore. Spostare la risorsa alle attività funzionerà, ma che in realtà non è fattibile se si vuole fare uso delle funzioni disegnabili (il che significa che avresti bisogno di una copia dell'immagine in ciascuna cartella ...).

Le risposte che coinvolgono file: // URL potrebbe non funzionare più come di Android 4.0. Si veda la risposta a questa domanda . Un modo che il lavoro volontà è nella risposta qui .

Ho lo stesso identico problema, ma né mettendo il file di immagine in res/drawable (che ho avuto prima di creare, ho avuto hust drawable-hdpi, -ldpi e -mdpi già esistenti) oppure utilizzando l'URL file:///asset/ ha lavorato per me.

Ecco quello che faccio:

attività:

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

Poi nel res/drawable ho collocato il banner300.jpg - ma non rivela. Tutte le idee?

si carica il drawable come si farebbe in qualsiasi altro luogo nel codice ... http://developer.android.com/guide/topics/resources/drawable -resource.html

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

anche @MikeNereson utilizzando Android, si può solo accedere direttamente i file RAW che si trovano nella directory di beni e SDCard.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top