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!

Robert Bana
sumber

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?

zov
sumber
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);
Dario Brux
sumber
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 .

Tiago
sumber
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);
Jarir
sumber
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);
Anubhav
sumber
2

Coba kode ini, saya mulai bekerja dengan baik.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Muhammed Haris
sumber