Come abilitare i controlli di zoom e pizzicare lo zoom in un WebView?


131

L'app Browser predefinita per Android mostra i controlli di zoom durante lo scorrimento e consente anche lo zoom con pizzico. Come posso abilitare questa funzione per la mia Webview?

Ho provato:

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

ma nessuna delle funzionalità viene abilitata di conseguenza. A proposito, ho impostato a WebChromeCliente a WebViewClientper la visualizzazione Web se questo fa la differenza.

Grazie!

Risposte:


291

Strano. Nel metodo OnCreate, sto usando

webView.getSettings().setBuiltInZoomControls(true);

E funziona bene qui. Qualcosa di particolare nella tua webview?


46
Mentre ciò consentirà il pizzico per lo zoom, mostrerà anche un controllo overlay zoom (Galaxy S3). Per disabilitare lo strumento di zoom su schermo, ma mantenere la funzionalità pinch-to-zoom, è necessario chiamare anche webView.setDisplayZoomControls (false).
Lev,

49
^webView.getSettings().setDisplayZoomControls(false);
wiseindy,

Tutti questi non funzionano per me. Prova ad esempio questo sito Web: " nbc26.com/robocalls/… ". Non mi consente di ingrandire. Funziona davvero per te? si prega di mostrare l'intero codice per questo.
sviluppatore Android

Se qualcuno sta guardando questa risposta e si chiede da dove provenga l'oggetto webview, puoi ottenerla WebView webView = (WebView) appView.getEngine().getView();come mostrato in questo commento.
Andrew Dant,

Se usi Xamarin.Android renderer vista web allora è il codice come sotto Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (true); Control.Settings.DisplayZoomControls = false;
Adil Saiyad,

94

Usa questi:

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

1
più 1, per la risposta .. mi ha aiutato.
Akshatha Srinivas,

1
Sì, setBuiltInZoomControls (true) e setDisplayZoomControls (false) hanno funzionato per me.
Pratik Saluja,

34

Controlla se non hai un ScrollView che avvolge la tua vista Web .

Nel mio caso quello era il problema. Sembra che ScrollView si frapponga al gesto di pizzicare.

Per risolverlo, basta portare la vista Web fuori da ScrollView .


6
mi hai salvato la giornata
allemattio il

Funziona benissimo per me. Ora posso eliminare del tutto la mia vista di scorrimento nidificata!
Avi Parshan,

funziona quando è possibile aggiungere Android: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed

4

All'interno di OnCreate, aggiungi:

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

All'interno del documento HTML, aggiungi:

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

All'interno di JavaScript, ometti:

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

Il valore booleano predefinito per setSupportZoom è truequindi non necessario per webview.getSettings().setSupportZoom(true);impostazione predefinita.
زياد

buona risposta! hai menzionato i problemi relativi all'HTML, questa è la chiave per risolvere il mio problema! grazie !
Siwei Shen 申思维

4

Per abilitare i controlli di zoom in un WebView, aggiungere la seguente riga:

webView.getSettings().setBuiltInZoomControls(true);

Con questa riga di codice, si ottiene lo zoom abilitato in WebView, se si desidera rimuovere i pulsanti di ingrandimento e riduzione forniti, aggiungere la seguente riga di codice:

webView.getSettings().setDisplayZoomControls(false);

2

Prova questo codice, sto lavorando bene.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.