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!

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?


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);

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 .


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);

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);

2

Wypróbuj ten kod, działam dobrze.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.