¿Cómo habilitar los controles de zoom y pellizcar el zoom en un WebView?


131

La aplicación de navegador predeterminada para Android muestra los controles de zoom cuando se desplaza y también permite el pellizco de zoom. ¿Cómo puedo habilitar esta función para mi propia Webview?

He intentado:

webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);

pero ninguna de las características se habilita como resultado. Por cierto, he establecido un a WebChromeClienty un WebViewClientpara Webview si eso hace la diferencia.

¡Gracias!

Respuestas:


291

Extraño. Dentro del método OnCreate, estoy usando

webView.getSettings().setBuiltInZoomControls(true);

Y está funcionando bien aquí. ¿Algo particular en tu webview?


46
Si bien esto permitirá pellizcar para hacer zoom, también mostrará un control de superposición de zoom (Galaxy S3). Para deshabilitar la herramienta de zoom en pantalla, pero conservar la funcionalidad de pellizcar para hacer zoom, también debe llamar a webView.setDisplayZoomControls (falso).
Lev

49
^webView.getSettings().setDisplayZoomControls(false);
wiseindy

Todo esto no funciona para mí. Pruebe este sitio web, por ejemplo: " nbc26.com/robocalls/… ". No me deja hacer zoom. ¿Realmente te funciona? muestra el código completo para ello.
Desarrollador de Android

Si alguien está mirando esta respuesta y se pregunta de dónde proviene el objeto webview, puede obtenerlo WebView webView = (WebView) appView.getEngine().getView();como se muestra en este comentario.
Andrew Dant

Si usa el representador de vista web Xamarin.Android, entonces es el código como se muestra a continuación Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (verdadero); Control.Settings.DisplayZoomControls = false;
Adil Saiyad

94

Use estos:

webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);

1
más 1, por la respuesta ... me ayudó.
Akshatha Srinivas

1
Sí, setBuiltInZoomControls (verdadero) y setDisplayZoomControls (falso) funcionó para mí.
Pratik Saluja

34

Compruebe si no tiene un ScrollView que ajusta su Webview .

En mi caso ese fue el problema. Parece que ScrollView se interpone en el camino del gesto de pellizco.

Para solucionarlo, simplemente lleve su Webview fuera de ScrollView .


66
me salvaste el día
allemattio

Funciona muy bien para mi. ¡Ahora puedo eliminar mi vista de desplazamiento anidada por completo!
Avi Parshan

funciona cuando puede agregar android: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed

4

Dentro de OnCreate, agregue:

 webview.getSettings().setSupportZoom(true);
 webview.getSettings().setBuiltInZoomControls(true);
 webview.getSettings().setDisplayZoomControls(false);

Dentro del documento html, agregue:

<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2, user-scalable=yes">
</head>
</html>

Dentro de JavaScript, omita:

//event.preventDefault ? event.preventDefault() : (event.returnValue = false);

El valor booleano predeterminado para setSupportZoom es true, por lo tanto, no es necesario webview.getSettings().setSupportZoom(true);por defecto.
زياد

¡buena respuesta! Usted mencionó los problemas relacionados con HTML, ¡esta es la clave para resolver mi problema! gracias !
Siwei Shen

4

Para habilitar los controles de zoom en un WebView, agregue la siguiente línea:

webView.getSettings().setBuiltInZoomControls(true);

Con esta línea de código, obtiene el zoom habilitado en su WebView, si desea eliminar los botones de acercamiento y alejamiento provistos, agregue la siguiente línea de código:

webView.getSettings().setDisplayZoomControls(false);

2

Prueba este código, ya estoy trabajando bien.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.