Wie aktiviere ich die Zoomsteuerung und drücke den Zoom in einer WebView?

131

Die Standard-Browser-App für Android zeigt beim Scrollen Zoom-Steuerelemente an und ermöglicht auch das Zoomen. Wie kann ich diese Funktion für meine eigene Webansicht aktivieren?

Ich habe es versucht:

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

Infolgedessen wird jedoch keine der Funktionen aktiviert. Übrigens habe ich ein WebChromeClientund ein WebViewClientfür die Webansicht festgelegt, wenn das einen Unterschied macht.

Vielen Dank!

Robert Bana
quelle

Antworten:

291

Seltsam. Innerhalb der OnCreate-Methode verwende ich

webView.getSettings().setBuiltInZoomControls(true);

Und hier funktioniert es gut. Gibt es etwas Besonderes in Ihrer Webansicht?

zov
quelle
46
Dies ermöglicht zwar das Kneifen zum Zoomen, zeigt jedoch auch eine Zoom-Overlay-Steuerung (Galaxy S3) an. Um das Zoom-Tool auf dem Bildschirm zu deaktivieren, aber die Pinch-to-Zoom-Funktion beizubehalten, müssen Sie auch webView.setDisplayZoomControls (false) aufrufen.
Lev
49
^webView.getSettings().setDisplayZoomControls(false);
Wiseindy
All dies funktioniert bei mir nicht. Versuchen Sie diese Website zum Beispiel: " nbc26.com/robocalls/… ". Ich kann nicht zoomen. Funktioniert es wirklich für dich? Bitte zeigen Sie den gesamten Code dafür.
Android-Entwickler
Wenn sich jemand diese Antwort ansieht und sich fragt, woher das Webview-Objekt stammt, können Sie es WebView webView = (WebView) appView.getEngine().getView();wie in diesem Kommentar
Andrew Dant
Wenn Sie den Xamarin.Android-Webansichts-Renderer verwenden, lautet der folgende Code: Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (true); Control.Settings.DisplayZoomControls = false;
Adil Saiyad
94

Benutze diese:

webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);
Dario Brux
quelle
1
plus 1, für die Antwort .. hat mir geholfen.
Akshatha Srinivas
1
Ja, setBuiltInZoomControls (true) und setDisplayZoomControls (false) haben bei mir funktioniert.
Pratik Saluja
34

Überprüfen Sie, ob Ihre Webansicht nicht über eine ScrollView verfügt .

In meinem Fall war das das Problem. Es scheint, dass ScrollView der Quetschgeste im Weg steht.

Um dies zu beheben, nehmen Sie einfach Ihre Webansicht außerhalb der ScrollView .

Tiago
quelle
6
Du hast meinen Tag gerettet
Allemattio
Funktioniert super für mich. Jetzt kann ich meine verschachtelte Bildlaufansicht komplett löschen!
Avi Parshan
Es funktioniert, wenn Sie Android hinzufügen können: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed
4

Fügen Sie in OnCreate Folgendes hinzu:

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

Fügen Sie im HTML-Dokument Folgendes hinzu:

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

Lassen Sie in Javascript weg:

//event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Jarir
quelle
Der Standard-Boolesche Wert für setSupportZoom ist true, daher ist dies webview.getSettings().setSupportZoom(true);standardmäßig nicht erforderlich .
زياد
gute Antwort! Sie haben die HTML-bezogenen Probleme erwähnt. Dies ist der Schlüssel zur Lösung meines Problems! Danke !
Siwei Shen 31
4

Fügen Sie die folgende Zeile hinzu, um die Zoomsteuerung in einer WebView zu aktivieren:

webView.getSettings().setBuiltInZoomControls(true);

Mit dieser Codezeile wird der Zoom in Ihrem WebView aktiviert. Wenn Sie die bereitgestellten Schaltflächen zum Vergrößern und Verkleinern entfernen möchten, fügen Sie die folgende Codezeile hinzu:

webView.getSettings().setDisplayZoomControls(false);
Anubhav
quelle
2

Versuchen Sie diesen Code, ich arbeite gut.

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