Bagaimana cara mengaktifkan kontrol zoom dan pinch zoom di WebView?


131

Aplikasi Browser default untuk Android menunjukkan kontrol zoom saat Anda menggulir dan juga memungkinkan untuk pinch zooming. Bagaimana saya bisa mengaktifkan fitur ini untuk tampilan web saya sendiri?

Saya sudah mencoba:

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

tetapi hasilnya tidak ada yang diaktifkan. Btw Saya sudah menetapkan a WebChromeClientdan a WebViewClientuntuk Webview jika itu membuat perbedaan.

Terima kasih!

Jawaban:


291

Aneh. Di dalam metode OnCreate, saya menggunakan

webView.getSettings().setBuiltInZoomControls(true);

Dan itu bekerja dengan baik di sini. Adakah hal khusus dalam tampilan web Anda?


46
Meskipun ini memungkinkan pinch-to-zoom, itu juga akan menampilkan kontrol overlay zoom (Galaxy S3). Untuk menonaktifkan alat zoom pada layar, tetapi tetap mempertahankan fungsi pinch-to-zoom, Anda perlu memanggil webView.setDisplayZoomControls (false) juga.
Im

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

Semua ini tidak bekerja untuk saya. Coba situs web ini misalnya: " nbc26.com/robocalls/… ". Itu tidak membiarkan saya memperbesar. Apakah ini benar-benar bekerja untuk Anda? tolong tunjukkan seluruh kode untuk itu.
pengembang android

Jika ada yang melihat jawaban ini dan bertanya-tanya dari mana objek tampilan web berasal, Anda bisa mendapatkannya melalui yang WebView webView = (WebView) appView.getEngine().getView();ditunjukkan dalam komentar ini.
Andrew Dant

Jika Anda menggunakan renderer tampilan web Xamarin.Android maka kodenya seperti di bawah ini Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (true); Control.Settings.DisplayZoomControls = false;
Adil Saiyad

94

Gunakan ini:

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

1
plus 1, untuk jawabannya .. membantu saya.
Akshatha Srinivas

1
Ya, setBuiltInZoomControls (true) dan setDisplayZoomControls (false) bekerja untuk saya.
Pratik Saluja

34

Periksa apakah Anda tidak memiliki ScrollView yang membungkus Webview Anda .

Dalam kasus saya itu masalahnya. Tampaknya ScrollView menghalangi gerakan mencubit.

Untuk memperbaikinya, ambil saja Tampilan Web Anda di luar ScrollView .


6
Anda menyelamatkan hari saya
allemattio

Bekerja bagus untukku. Sekarang saya bisa menghapus tampilan gulir bersarang saya sama sekali!
Avi Parshan

ini berfungsi ketika Anda dapat menambahkan android: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed

4

Di dalam OnCreate, tambahkan:

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

Di dalam dokumen html, tambahkan:

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

Di dalam javascript, hapus:

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

Boolean default untuk setSupportZoom adalah true, karenanya tidak perlu webview.getSettings().setSupportZoom(true);secara default.
زياد

jawaban yang bagus! Anda menyebutkan masalah terkait HTML, ini adalah kunci untuk menyelesaikan masalah saya! Terima kasih !
Siwei Shen 申思维

4

Untuk mengaktifkan kontrol zoom di WebView, tambahkan baris berikut:

webView.getSettings().setBuiltInZoomControls(true);

Dengan baris kode ini, Anda mengaktifkan zoom di WebView Anda, jika Anda ingin menghapus tombol zoom in dan zoom out yang disediakan, tambahkan baris kode berikut:

webView.getSettings().setDisplayZoomControls(false);

2

Coba kode ini, saya mulai bekerja dengan baik.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.