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!

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?


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

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 .


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

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

2

Tente este código, eu estou funcionando bem.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.