Làm cách nào để bật điều khiển thu phóng và thu phóng pinch trong WebView?


131

Ứng dụng Trình duyệt mặc định cho Android hiển thị các điều khiển thu phóng khi bạn cuộn và cũng cho phép thu phóng pinch. Làm cách nào tôi có thể kích hoạt tính năng này cho Webview của riêng tôi?

Tôi đã thử:

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

nhưng kết quả không được kích hoạt. Btw Tôi đã thiết lập WebChromeClientWebViewClientcho Webview nếu điều đó tạo ra sự khác biệt.

Cảm ơn!

Câu trả lời:


291

Lạ thật. Bên trong phương thức OnCreate, tôi đang sử dụng

webView.getSettings().setBuiltInZoomControls(true);

Và nó hoạt động tốt ở đây. Bất cứ điều gì đặc biệt trong webview của bạn?


46
Mặc dù điều này sẽ cho phép pinch-to-zoom, nó cũng sẽ hiển thị điều khiển lớp phủ thu phóng (Galaxy S3). Để tắt công cụ thu phóng trên màn hình, nhưng vẫn giữ chức năng pinch-to-zoom, bạn cần gọi webView.setDisplayZoomControls (false).
Lev

49
^webView.getSettings().setDisplayZoomControls(false);
khôn ngoan

Tất cả những thứ này không làm việc cho tôi. Hãy thử trang web này ví dụ: " nbc26.com/robocalls/ '". Nó không cho phép tôi phóng to. Nó thực sự làm việc cho bạn? xin vui lòng hiển thị toàn bộ mã cho nó.
nhà phát triển Android

Nếu bất cứ ai đang xem câu trả lời này và tự hỏi đối tượng webview đến từ đâu, bạn có thể lấy nó qua WebView webView = (WebView) appView.getEngine().getView();như thể hiện trong bình luận này.
Andrew Dant

Nếu bạn sử dụng trình kết xuất chế độ xem web Xamarin.Android thì mã đó như bên dưới Control.Sinstall.BuiltInZoomControls = true; Control.Sinstall.SetSupportZoom (đúng); Control.Sinstall.DisplayZoomControls = false;
Adil Saiyad

94

Sử dụng những

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

1
cộng 1, cho câu trả lời .. đã giúp tôi.
Akshatha Srinivas

1
Có, setBuiltInZoomControls (true) và setDisplayZoomControls (false) đã làm việc cho tôi.
Pratik Saluja

34

Kiểm tra xem bạn không có ScrollView bao bọc Webview của bạn .

Trong trường hợp của tôi đó là vấn đề. Có vẻ như ScrollView cản trở cử chỉ.

Để khắc phục, chỉ cần đưa Webview của bạn ra ngoài ScrollView .


6
bạn đã cứu ngày của tôi
allemattio

Làm việc tuyệt vời cho tôi. Bây giờ tôi có thể xóa hoàn toàn chế độ xem cuộn lồng nhau của mình!
Avi Parshan

nó hoạt động khi bạn có thể thêm android: fillViewport = true <ScrollView android: layout_creen = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidahmed

4

Bên trong OnCreate, thêm:

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

Trong tài liệu html, thêm:

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

Bên trong javascript, bỏ qua:

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

Boolean mặc định cho setSupportZoom là true, do đó không cần webview.getSettings().setSupportZoom(true);mặc định.
زياد

câu trả lời tốt! bạn đã đề cập đến các vấn đề liên quan đến HTML, đây là chìa khóa giải quyết vấn đề của tôi! cảm ơn bạn !
Siwei Shen

4

Để bật điều khiển thu phóng trong WebView, hãy thêm dòng sau:

webView.getSettings().setBuiltInZoomControls(true);

Với dòng mã này, bạn có thể phóng to thu nhỏ trong WebView của mình, nếu bạn muốn loại bỏ các nút phóng to và thu nhỏ được cung cấp, hãy thêm dòng mã sau:

webView.getSettings().setDisplayZoomControls(false);

2

Hãy thử mã này, tôi sẽ làm việc tốt.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.