Jak włączyć elementy sterujące powiększaniem i powiększanie przez szczypanie w WebView?

131

Domyślna aplikacja przeglądarki na Androida pokazuje elementy sterujące powiększeniem podczas przewijania, a także umożliwia powiększanie przez szczypanie. Jak mogę włączyć tę funkcję dla mojego własnego Webview?

Próbowałem:

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

ale w rezultacie żadna z funkcji nie zostaje włączona. Przy okazji ustawiłem a WebChromeClienti WebViewClientdla Webview, jeśli to robi różnicę.

Dzięki!

Robert Bana
źródło

Odpowiedzi:

293

Dziwne. Wewnątrz metody OnCreate, używam

webView.getSettings().setBuiltInZoomControls(true);

I tutaj działa dobrze. Coś szczególnego w Twoim widoku internetowym?

zov
źródło
46
Chociaż pozwoli to na powiększenie przez szczypanie, wyświetli również element sterujący nakładką powiększenia (Galaxy S3). Aby wyłączyć narzędzie powiększania na ekranie, ale zachować funkcję powiększania przez szczypanie, należy również wywołać funkcję webView.setDisplayZoomControls (false).
Lew
49
^webView.getSettings().setDisplayZoomControls(false);
wiseindy
To wszystko nie działa dla mnie. Wypróbuj na przykład tę witrynę internetową: „ nbc26.com/robocalls/… ”. Nie pozwala mi przybliżyć. Czy to naprawdę działa dla Ciebie? proszę pokazać cały kod.
programista Androida
Jeśli ktoś patrzy na tę odpowiedź i zastanawia się, skąd pochodzi obiekt Webview, możesz go uzyskać za pośrednictwem, WebView webView = (WebView) appView.getEngine().getView();jak pokazano w tym komentarzu.
Andrew Dant
Jeśli używasz modułu renderującego Xamarin.Android w widoku sieci Web, jego kod jest przedstawiony poniżej Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (true); Control.Settings.DisplayZoomControls = false;
Adil Saiyad
96

Użyj tych:

webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);
Dario Brux
źródło
1
plus 1, za odpowiedź .. pomogło mi.
Akshatha Srinivas
1
Tak, setBuiltInZoomControls (true) i setDisplayZoomControls (false) działały dla mnie.
Pratik Saluja
35

Sprawdź, czy nie masz ScrollView opakowującego widok Webview .

W moim przypadku to był problem. Wygląda na to, że ScrollView przeszkadza w wykonaniu gestu uszczypnięcia.

Aby to naprawić, po prostu przenieś swój Webview poza ScrollView .

Tiago
źródło
6
uratowałeś mi dzień
allemattio,
U mnie działa świetnie. Teraz mogę całkowicie usunąć zagnieżdżony widok przewijania!
Avi Parshan,
działa, gdy można dodać android: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed
4

Wewnątrz OnCreate dodaj:

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

W dokumencie html dodaj:

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

W javascript pomiń:

//event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Jarir
źródło
Domyślną wartością logiczną dla setSupportZoom jest true, dlatego webview.getSettings().setSupportZoom(true);domyślnie nie ma takiej potrzeby .
زياد
dobra odpowiedź! wspomniałeś o kwestiach związanych z HTML, to jest klucz do rozwiązania mojego problemu! Dziękuję Ci !
Siwei Shen 申思维
4

Aby włączyć elementy sterujące powiększeniem w widoku WebView, dodaj następujący wiersz:

webView.getSettings().setBuiltInZoomControls(true);

Za pomocą tej linii kodu możesz włączyć powiększanie w swoim WebView, jeśli chcesz usunąć dostarczone przyciski powiększania i pomniejszania, dodaj następujący wiersz kodu:

webView.getSettings().setDisplayZoomControls(false);
Anubhav
źródło
2

Wypróbuj ten kod, działam dobrze.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Muhammed Haris
źródło