Como ativar os controles de zoom e beliscar o zoom em um WebView?

131

O aplicativo Navegador padrão para Android mostra controles de zoom quando você está rolando e também permite o zoom de pitada. Como posso ativar esse recurso para meu próprio Webview?

Eu tentei:

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

mas nenhum dos recursos é ativado como resultado. Btw eu defini um WebChromeCliente um WebViewClientpara o Webview, se isso faz a diferença.

Obrigado!

Robert Bana
fonte

Respostas:

291

Estranho. Dentro do método OnCreate, estou usando

webView.getSettings().setBuiltInZoomControls(true);

E está funcionando bem aqui. Alguma coisa em particular na sua visualização na web?

zov
fonte
46
Embora isso permita beliscar para ampliar, também exibirá um controle de sobreposição de zoom (Galaxy S3). Para desativar a ferramenta de zoom na tela, mas manter a funcionalidade de beliscar para aplicar zoom, você também precisa chamar webView.setDisplayZoomControls (false).
Lev
49
^webView.getSettings().setDisplayZoomControls(false);
wiseindy
Tudo isso não funciona para mim. Tente este site por exemplo: " nbc26.com/robocalls/… ". Não me deixa ampliar. Isso realmente funciona para você? mostre o código inteiro para ele.
desenvolvedor Android
Se alguém estiver olhando para esta resposta e se perguntando de onde vem o objeto de visualização na web, você pode obtê-la WebView webView = (WebView) appView.getEngine().getView();como mostrado neste comentário.
Andrew Dant
Se você usa o renderizador de exibição da Web Xamarin.Android, o código é mostrado abaixo de Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (true); Control.Settings.DisplayZoomControls = false;
Adil Saiyad 16/03
94

Use estes:

webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);
Dario Brux
fonte
1
mais 1, pela resposta .. me ajudou.
Akshatha Srinivas
1
Sim, setBuiltInZoomControls (true) e setDisplayZoomControls (false) funcionaram para mim.
Pratik Saluja
34

Verifique se você não tem um ScrollView envolvendo sua Webview .

No meu caso, esse foi o problema. Parece que o ScrollView atrapalha o gesto de beliscar.

Para corrigi-lo, basta levar o seu Webview para fora do ScrollView .

Tiago
fonte
6
você salvou meu dia
allemattio
Funciona muito bem para mim. Agora eu posso excluir completamente minha visualização de rolagem aninhada!
Avi Parshan
funciona quando você pode adicionar android: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed
4

Dentro do OnCreate, adicione:

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

Dentro do documento html, adicione:

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

Dentro do javascript, omita:

//event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Jarir
fonte
O valor booleano padrão para o setSupportZoom é true, portanto, não há necessidade webview.getSettings().setSupportZoom(true);por padrão.
زياد
boa resposta! você mencionou os problemas relacionados ao HTML, esta é a chave para resolver o meu problema! obrigado !
Siwei Shen
4

Para habilitar os controles de zoom em um WebView, adicione a seguinte linha:

webView.getSettings().setBuiltInZoomControls(true);

Com essa linha de código, você ativa o zoom no seu WebView. Se você deseja remover os botões de aumentar e diminuir o zoom fornecidos, adicione a seguinte linha de código:

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

Tente este código, eu estou funcionando bem.

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