Как включить элементы управления масштабированием и масштабирование пальцем в WebView?

131

Приложение браузера по умолчанию для Android показывает элементы управления масштабированием при прокрутке, а также позволяет масштабировать пальцем. Как я могу включить эту функцию для моего собственного веб-просмотра?

Я пробовал:

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

но в результате ни одна из функций не включается. Кстати, я установил a WebChromeClientи a WebViewClientдля Webview, если это имеет значение.

Спасибо!

Роберт Бана
источник

Ответы:

291

Странный. Внутри метода OnCreate я использую

webView.getSettings().setBuiltInZoomControls(true);

И здесь все работает нормально. Что-нибудь особенное в вашем веб-просмотре?

ЗОВ
источник
46
Хотя это позволит масштабировать сведением пальцев, он также отобразит элемент управления масштабированием (Galaxy S3). Чтобы отключить инструмент масштабирования на экране, но сохранить функцию масштабирования пальцем, вам также необходимо вызвать webView.setDisplayZoomControls (false).
Лев
49
^webView.getSettings().setDisplayZoomControls(false);
Wickindy
Все это мне не подходит. Попробуйте, например, этот веб-сайт: « nbc26.com/robocalls/… ». Это не позволяет мне увеличивать масштаб. Это действительно работает для вас? покажите для него весь код.
разработчик Android
Если кто-то смотрит на этот ответ и задается вопросом, откуда взялся объект веб-просмотра, вы можете получить его, WebView webView = (WebView) appView.getEngine().getView();как показано в этом комментарии.
Эндрю Дант
Если вы используете средство визуализации веб-представления Xamarin.Android, тогда это код, как показано ниже Control.Settings.BuiltInZoomControls = true; Control.Settings.SetSupportZoom (истина); Control.Settings.DisplayZoomControls = false;
Адиль Сайяд,
95

Используйте эти:

webview.getSettings().setBuiltInZoomControls(true);
webview.getSettings().setDisplayZoomControls(false);
Дарио Брукс
источник
1
плюс 1, за ответ .. мне помогло.
Akshatha Srinivas
1
Да, у меня работали setBuiltInZoomControls (true) и setDisplayZoomControls (false).
Pratik Saluja
34

Проверьте, нет ли у вас ScrollView, обертывающего ваш Webview .

В моем случае это была проблема. Кажется, ScrollView мешает жесту ущипнуть.

Чтобы исправить это, просто выведите свой веб-просмотр за пределы ScrollView .

Tiago
источник
6
Ты спас мне день
allemattio
У меня отлично работает. Теперь я могу полностью удалить вложенную прокрутку!
Ави Паршан
он работает, когда вы можете добавить android: fillViewport = true <ScrollView android: layout_width = "match_parent" android: layout_height = "match_parent" android: fillViewport = "true">
androidAhmed 01
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>

Внутри javascript опустите:

//event.preventDefault ? event.preventDefault() : (event.returnValue = false);
Jarir
источник
По умолчанию для setSupportZoom используется логическое значение true, поэтому webview.getSettings().setSupportZoom(true);по умолчанию в нем нет необходимости .
زياد
хороший ответ! вы упомянули о проблемах, связанных с HTML, это ключ к решению моей проблемы! Спасибо !
Сивэй Шен 申思维
4

Чтобы включить элементы управления масштабированием в WebView, добавьте следующую строку:

webView.getSettings().setBuiltInZoomControls(true);

С помощью этой строки кода вы активируете масштабирование в своем WebView. Если вы хотите удалить кнопки увеличения и уменьшения масштаба, добавьте следующую строку кода:

webView.getSettings().setDisplayZoomControls(false);
Анубхав
источник
2

Попробуйте этот код, у меня все нормально.

 webSettings.setSupportZoom(true);
 webSettings.setBuiltInZoomControls(true);
 webSettings.setDisplayZoomControls(false);
Мухаммед Харис
источник