WebView에서 줌 컨트롤을 사용하고 핀치 줌을 사용하는 방법은 무엇입니까?


131

Android 용 기본 브라우저 앱은 스크롤 할 때 확대 / 축소 컨트롤을 표시하고 핀치 확대 / 축소를 허용합니다. 내 웹뷰에이 기능을 어떻게 활성화 할 수 있습니까?

난 노력 했어:

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

그러나 그 결과 어떤 기능도 활성화되지 않습니다. Btw Webview에 a WebChromeClient와 a WebViewClient를 설정 하면 차이가 있습니다.

감사!

답변:


291

이상한. OnCreate 메서드 내부에서 사용하고 있습니다.

webView.getSettings().setBuiltInZoomControls(true);

그리고 여기서 잘 작동합니다. 웹뷰에 특별한 것이 있습니까?


46
이렇게하면 확대 / 축소가 가능하지만 확대 / 축소 오버레이 컨트롤 (갤럭시 S3)도 표시됩니다. 화면 확대 / 축소 도구를 비활성화하고 확대 / 축소 기능을 유지하려면 webView.setDisplayZoomControls (false)도 호출해야합니다.
Lev

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

이 모든 것이 나를 위해 작동하지 않습니다. " nbc26.com/robocalls/… "와 같은 웹 사이트를 사용해보십시오 . 확대 / 축소 할 수 없습니다. 정말 당신을 위해 작동합니까? 전체 코드를 표시하십시오.
안드로이드 개발자

누구나이 답변을보고 webview 객체의 출처를 궁금해하는 경우이 의견에WebView webView = (WebView) appView.getEngine().getView(); 표시된 것처럼 얻을 수 있습니다 .
Andrew Dant

Xamarin.Android 웹 뷰 렌더러를 사용하는 경우 아래 코드는 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

1
예, setBuiltInZoomControls (true) 및 setDisplayZoomControls (false)가 저에게 효과적이었습니다.
Pratik Saluja

34

Webview를 감싸는 ScrollView 가 없는지 확인하십시오 .

제 경우에는 문제였습니다. ScrollView가 핀치 제스처를 방해하는 것처럼 보입니다.

이를 해결하려면 ScrollView 외부에서 Webview를 가져 가십시오 .


6
당신은 내 하루를 저장
allemattio

나를 위해 잘 작동합니다. 이제 내 중첩 스크롤보기를 모두 삭제할 수 있습니다!
Avi Parshan

당신이 안드로이드 추가 할 때 작동 : <: layout_width = "match_parent"안드로이드 : layout_height = "match_parent"안드로이드 :있는 ScrollView 안드로이드 fillViewport = "진정한"> fillViewport 사실 =
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>

자바 스크립트에서 생략 :

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

setSupportZoom의 기본 부울은 true이므로 webview.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.