146 votes

Comment activer les commandes de zoom et le zoom tactile dans un WebView ?

L'application par défaut du navigateur pour Android affiche des contrôles de zoom lorsque vous faites défiler et permet également le zoom par pincement. Comment puis-je activer cette fonction pour ma propre WebView?

J'ai essayé:

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

mais aucune des fonctionnalités n'est activée en conséquence. Au fait, j'ai défini un WebChromeClient et un WebViewClient pour la WebView si cela fait une différence.

Merci!

316voto

zov Points 1247

Étrange. À l'intérieur de la méthode OnCreate, j'utilise

webView.getSettings().setBuiltInZoomControls(true);

Et ça fonctionne bien ici. Quelque chose de particulier dans votre webview ?

51 votes

Tout en permettant le zoom par pincement, cela affichera également un contrôle de superposition de zoom (Galaxy S3). Pour désactiver l'outil de zoom à l'écran, mais conserver la fonctionnalité de zoom par pincement, vous devez également appeler webView.setDisplayZoomControls(false).

52 votes

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

1 votes

Tous ceux-ci ne fonctionnent pas pour moi. Essayez ce site Web par exemple: "nbc26.com/robocalls/…" . Il ne me permet pas de zoomer. Est-ce que cela fonctionne vraiment pour vous? Veuillez afficher le code complet pour cela.

113voto

Dario Brux Points 1649

Utilisez ces lignes de code :

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

1 votes

Plus 1, pour la réponse.. m'a aidé.

1 votes

Oui, setBuiltInZoomControls(true) et setDisplayZoomControls(false) ont fonctionné pour moi.

36voto

Tiago Points 1234

Vérifiez si vous n'avez pas un ScrollView enveloppant votre Webview.

Dans mon cas, c'était le problème. Il semble que ScrollView gêne le geste de pincement.

Pour le corriger, il suffit de sortir votre Webview du ScrollView.

0 votes

Fonctionne très bien pour moi. Maintenant je peux supprimer mon affichage à défilement imbriqué complètement !

0 votes

Cela fonctionne lorsque vous pouvez ajouter android:fillViewport=true

12voto

user700528 Points 35

À l'intérieur de OnCreate, ajoutez :

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

À l'intérieur du document html, ajoutez :

À l'intérieur du javascript, omettez :

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

0 votes

La valeur booléenne par défaut pour setSupportZoom est true, donc pas besoin de webview.getSettings().setSupportZoom(true); par défaut.

0 votes

Bonne réponse! vous avez mentionné les problèmes liés à HTML, c'est la clé pour résoudre mon problème! merci!

7voto

Anubhav Points 364

Pour activer les contrôles de zoom dans un WebView, ajoutez la ligne suivante :

webView.getSettings().setBuiltInZoomControls(true);

Avec cette ligne de code, vous activez le zoom dans votre WebView. Si vous voulez supprimer les boutons de zoom avant et zoom arrière fournis, ajoutez la ligne de code suivante :

webView.getSettings().setDisplayZoomControls(false);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X