WebViewでズームコントロールを有効にしてピンチズームを行う方法


131

Androidのデフォルトのブラウザーアプリでは、スクロール時にズームコントロールが表示され、ピンチズームも可能です。この機能を自分のWebviewで有効にするにはどうすればよいですか?

私はもう試した:

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

ただし、どちらの機能も有効になりません。ところで私はそれが違いを生むなら、Webviewにa WebChromeClientとa WebViewClientを設定しました。

ありがとう!

回答:


291

奇妙な。OnCreateメソッドの内部では、

webView.getSettings().setBuiltInZoomControls(true);

そして、それはここでうまく機能しています。あなたのウェブビューに何か特別なものはありますか?


46
ピンチからズームまで可能ですが、ズームオーバーレイコントロール(Galaxy S3)も表示されます。画面上のズームツールを無効にしてピンチツーズーム機能を維持するには、webView.setDisplayZoomControls(false)も呼び出す必要があります。
2014年

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

これらはすべて私にはうまくいきません。たとえば、次のWebサイトを試してください: " nbc26.com/robocalls/… "。ズームできません。それは本当にあなたのために働くのですか?そのためのコード全体を示してください。
android開発者

誰かがこの回答を見ていて、webviewオブジェクトがどこから来ているのか疑問に思っている場合はWebView webView = (WebView) appView.getEngine().getView();このコメントに
Andrew Dant

Xamarin.Android Webビューレンダラーを使用する場合、それは以下のコードですControl.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom(true); Control.Settings.DisplayZoomControls = false;
Adil Saiyad

94

これらを使用してください:

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

1
プラス1で答えが得られました。
Akshatha Srinivas 2016

1
はい、setBuiltInZoomControls(true)とsetDisplayZoomControls(false)がうまくいきました。
Pratik Saluja

34

WebviewをラップするScrollViewがないかどうかを確認します

私の場合、それが問題でした。ScrollViewがピンチジェスチャーの邪魔になるようです。

これを修正するには、WebViewをScrollViewの外に持っていきます。


6
あなたは私の一日を救った
allemattio

私にとってはうまくいきます。これで、ネストされたスクロールビューを完全に削除できます。
Avi Parshan 2017

android:fillViewport = true <ScrollView android:layout_width = "match_parent" android:layout_height = "match_parent" android:fillViewport = "true">
androidAhmed

4

OnCreate内に、以下を追加します。

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

htmlドキュメント内に、以下を追加します。

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

JavaScript内では省略:

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

setSupportZoomのデフォルトのブール値はなのでtruewebview.getSettings().setSupportZoom(true);デフォルトでは必要ありません。
زياد

いい答えだ!HTML関連の問題についておっしゃっていましたが、これが私の問題を解決する鍵です。ありがとうございました !
Siwei Shen申思维

4

WebViewでズームコントロールを有効にするには、次の行を追加します。

webView.getSettings().setBuiltInZoomControls(true);

このコード行を使用すると、WebViewでズームが有効になり、提供されているズームインボタンとズームアウトボタンを削除する場合は、次のコード行を追加します。

webView.getSettings().setDisplayZoomControls(false);

2

このコードを試してみてください、私はうまくいきます。

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.