¿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!

Robert Bana
fuente

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?

zov
fuente
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);
Dario Brux
fuente
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 .

Tiago
fuente
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);
Jarir
fuente
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);
Anubhav
fuente
2

Prueba este código, ya estoy trabajando bien.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Muhammed Haris
fuente