Как включить элементы управления масштабированием и масштабирование пальцем в 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 .


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

По умолчанию для 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);
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.