วิธีเปิดใช้งานการควบคุมการซูมและการบีบนิ้วใน WebView


131

แอปเบราว์เซอร์เริ่มต้นสำหรับ Android แสดงการควบคุมการซูมเมื่อคุณเลื่อนและยังช่วยให้การซูมหยิก ฉันจะเปิดใช้งานคุณสมบัตินี้สำหรับ Webview ของตัวเองได้อย่างไร

ฉันพยายามแล้ว:

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

แต่จะไม่มีการเปิดใช้งานคุณลักษณะใด ๆ Btw ฉันได้ตั้งค่าWebChromeClientและWebViewClientสำหรับ Webview ถ้ามันสร้างความแตกต่าง

ขอบคุณ!

คำตอบ:


291

แปลก. วิธีการภายในของ OnCreate ฉันใช้อยู่

webView.getSettings().setBuiltInZoomControls(true);

และมันก็ทำงานได้ดีที่นี่ มีอะไรพิเศษใน webview ของคุณ?


46
ขณะนี้จะช่วยให้หยิกเพื่อซูมก็จะแสดงการควบคุมการซ้อนทับซูม (Galaxy S3) ในการปิดการใช้งานเครื่องมือซูมบนหน้าจอ แต่ยังคงใช้งานการบีบนิ้วเพื่อซูมคุณต้องเรียกใช้ webView.setDisplayZoomControls (false) เช่นกัน
เลฟ

49
^webView.getSettings().setDisplayZoomControls(false);
ปัญญา

ทั้งหมดนี้ไม่ได้ผลสำหรับฉัน ลองเว็บไซต์นี้ตัวอย่างเช่น: " nbc26.com/robocalls/… " มันไม่ให้ฉันซูม มันใช้งานได้จริงสำหรับคุณ? กรุณาแสดงรหัสทั้งหมดสำหรับมัน
นักพัฒนา android

หากใครกำลังดูคำตอบนี้และสงสัยว่ามาจากวัตถุ webview คุณสามารถรับมันผ่านWebView webView = (WebView) appView.getEngine().getView();ตามที่แสดงในความคิดเห็นนี้
Andrew Dant

หากคุณใช้ Xamarin.Android ตัวแสดงผลมุมมองเว็บแล้วมันเป็นรหัสด้านล่าง Control.Settings.BuiltInZoomControls = true Control.Settings.SetSupportZoom (จริง); 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

ตรวจสอบว่าคุณไม่ได้มีScrollView ห่อ Webview

ในกรณีของฉันนั่นคือปัญหา ดูเหมือนว่า ScrollView จะเข้าหาท่าทางการบีบนิ้วมือ

ที่จะแก้ไขได้เพียงแค่ใช้เวลาของคุณ Webview นอก ScrollView


6
คุณบันทึกวันของฉันไว้
allemattio

ใช้งานได้ดีสำหรับฉัน ตอนนี้ฉันสามารถลบมุมมองการเลื่อนแบบซ้อนทั้งหมดได้!
Avi Parshan

มันทำงานได้เมื่อคุณสามารถเพิ่ม 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>

ภายในจาวาสคริปต์ละเว้น:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.