¿Puede WebView de Android cambiar automáticamente el tamaño de imágenes enormes?

En algunos navegadores web, las imágenes enormes se redimensionan automáticamente para adaptarse a la pantalla.

¿Es posible hacer lo mismo en Android WebView?

La página web solo contiene la imagen, ¿tal vez agregar algo de JavaScript podría hacer el truco?
¿Alguien ya ha hecho esto?

Nota: no sé el tamaño de la imagen de antemano.

Si es posible. Puede probar configurando WebView usando el siguiente código. Cambia el tamaño de todas las imágenes (mayor que el Device Screen Width de la pantalla del Device Screen Width ) al Device Screen Width de la pantalla. Esto funciona para ambas orientaciones (vertical y horizontal)

 webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

Puede agregar márgenes extra / relleno más adelante para obtener el espaciado correcto.

 webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN); 

funciona, pero está en desuso . Esta es otra solución sin LayoutAlgorithm.SINGLE_COLUMN, usando CSS:

 @SuppressLint("NewApi") private openWebView() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.TEXT_AUTOSIZING); } else { webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.NORMAL); } String data = "
your HTML content
"; webView.loadDataWithBaseURL("file:///android_asset/", getHtmlData(data), "text/html", "utf-8", null); } private String getHtmlData(String bodyHTML) { String head = ""; return "" + head + "" + bodyHTML + ""; }

Puede hacer que el navegador cambie el tamaño de la imagen para que se ajuste al ancho máximo de la pantalla:

  

También es posible cambiar el tamaño de su altura a la ventana gráfica de WebView:

  

Sin embargo, cambiar el tamaño del ancho y la altura daría como resultado una imagen estirada. Para cambiar el tamaño del ancho o alto dependiendo de qué lado se ajuste mejor, puedes considerar un poco de JavaScript, como este:

   

Puedes usar esto:

 WebView webView = (WebView) findViewById(R.id.myWebView); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); 

Encontré esta solución aquí: Cómo establecer el zoom / ancho inicial para una vista web

Si su ancho de WebView es fill_parent , puede usar este código:

 Display display=getWindowManager().getDefaultDisplay(); int width=display.getWidth(); String data=""; webView.loadData(data, "text/html", "utf-8"); 

¡Y el zoom sigue funcionando!

Mismo método si la height es fill_parent .

Mis favoritos :

 String data = "\"\""; webview.loadData(data, "text/html; charset=UTF-8", null); 

Puede enviar el tamaño que desee en los parámetros de solicitud y dejar que el servidor configure el ancho / alto en el elemento img por usted.