Pregunta

Me estoy tirando HTML a una vista web para rendir. En la necesidad de HTML que para cargar una imagen que tengo en /res/drawable.

Tengo /res/drawable/my_image.png y el código como este:

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

Cuando el html cadena tiene algo como:

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

La pregunta es, ¿cuál debería ser ese atributo imagen src para referirse a la imagen en /res/drawable?

¿Fue útil?

Solución

Esto funcionó en Android 2.2

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

donde q1.png está en la res / dibujable-IPAP carpeta

Otros consejos

Admito que no sé mucho acerca WebViews / HTML, pero parece que usted está tomando la ruta más complicada para esto. Hay una manera fácil de cargar el archivo HTML; ponerlo en la carpeta de sus activos, y luego se puede hacer referencia a los siguientes.

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

Es evidente que su diseño es más complejo y cuando tenga algo más que la vista web por lo que no se puede utilizar directamente setContentView(), pero esa es la idea básica. A continuación, para hacer referencia a una imagen en el archivo HTML, he usado una etiqueta <img> este modo:

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

funciona eso para usted?

user302750,

Su método es incorrecto. res/drawable/banner300.jpg debe ser file:///android_res/drawable/banner300.jpg.

banner300.jpg puede estar en uno de los siguientes puntos de su proyecto, y el androide se cargará automáticamente el correcto para el dispositivo que está utilizando.

  • 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 carpeta assets es por los recursos genéricos que no necesita diferentes versiones de. Un ejemplo podría ser una plantilla XSL, o algo por el estilo.

MikeNereson, su respuesta a su problema tampoco es correcta, los recursos dibujable debe estar contenido en el directorio res.

Aquí está un ejemplo de mi propio proyecto. Me html de salida, exactamente como esta:

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

Si se utiliza un dispositivo de ldpi, me sale la imagen ldpi, si se utiliza hdpi o mdpi, me sale el apropiado para esos también. Android resuelve file:///android_res/drawable/stats_btn.png a uno de los siguientes recursos que tengo en mi proyecto.

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

De mis pruebas del camino, "file: ///android_res/drawable/q1.png" sólo funciona con 2.2 +. Para 2.1 que le da un archivo no se encuentra el error. Al mover el recurso a los activos que funciona, pero no es realmente factible si desea hacer uso de las características dibujable (lo que significa que había necesidad de una copia de la imagen de cada carpeta ...).

Las respuestas que implican file: // URL puede no trabajar más, ya que de Android 4.0. Véase la respuesta a esta pregunta . Una forma que el trabajo está en la respuesta aquí .

Tengo el mismo problema, pero tampoco colocar el archivo de imagen en res/drawable (que tuve por primera vez para crear, yo tenía hust dibujable-IPAP, -ldpi y -mdpi ya existente) o utilizando la URL file:///asset/ trabajó para mí.

Esto es lo que hago:

Actividad:

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

A continuación, en res/drawable me colocó el banner300.jpg - pero no aparece. Algunas ideas?

se carga el dibujables como lo haría con cualquier otra parte de su código ... http://developer.android.com/guide/topics/resources/drawable -resource.html

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

También @MikeNereson usando Android, sólo se puede acceder directamente a los archivos RAW que se encuentran en el directorio de activos y la tarjeta SD.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top