L'application de navigateur par défaut pour Android affiche les commandes de zoom lorsque vous faites défiler et permet également le zoom par pincement. Comment puis-je activer cette fonctionnalité pour ma propre vue Web?
J'ai essayé:
webSettings.setBuiltInZoomControls(true);
webSettings.setSupportZoom(true);
mais aucune des fonctionnalités n'est activée en conséquence. Btw, j'ai défini un WebChromeClient
et un WebViewClient
pour la vue Web si cela fait une différence.
Merci!
Étrange. Dans la méthode OnCreate, j'utilise
webView.getSettings().setBuiltInZoomControls(true);
Et ça marche bien ici. Quelque chose de particulier dans votre webview?
Utilisez ceux-ci:
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);
Vérifiez si vous n'avez pas ScrollView enveloppant votre Webview.
Dans mon cas, c'était le problème. Il semble que ScrollView gêne le geste de pincement.
Pour résoudre ce problème, il suffit de placez votre WebView en dehors de ScrollView.
Dans OnCreate, ajoutez:
webview.getSettings().setSupportZoom(true);
webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);
Dans le document html, ajoutez:
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=2, user-scalable=yes">
</head>
</html>
Dans javascript, omettez:
//event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Essayez ce code, je travaille bien.
webSettings.setSupportZoom(true);
webSettings.setBuiltInZoomControls(true);
webSettings.setDisplayZoomControls(false);
Pour activer les contrôles de zoom dans une vue Web, ajoutez la ligne suivante:
webView.getSettings().setBuiltInZoomControls(true);
Avec cette ligne de code, vous obtenez le zoom activé dans votre WebView. Si vous souhaitez supprimer les boutons de zoom avant et de zoom arrière fournis, ajoutez la ligne de code suivante:
webView.getSettings().setDisplayZoomControls(false);