Android webview увеличение масштаба

Как установить начальный масштаб / ширину для webview

Я пытаюсь заставить WebView иметь подобное поведение, как браузер android. Браузер открывает все страницы таким образом, что пытается подогнать их ширину на экране. Однако поведение WebView по умолчанию должно начинаться со 100% пиксельного масштаба, поэтому он начинает увеличиваться в верхнем левом углу.

Я потратил последние пару часов, пытаясь найти способ заставить WebView масштабировать страницу на экран, как это происходит в браузере, но мне не повезло. Кто-нибудь нашли способ сделать это?

Я вижу, что параметр называется setLoadWithOverviewMode, но это, похоже, ничего не делает. Я также экспериментировал с setInitialScale, но на разных размерах экрана и размерах веб-страниц, которые не будут такими изящными, как масштабирование браузеров.

У кого-нибудь есть зацепки?

EDIT: метод Брайана, кажется, работает, когда телефон в ландшафте, но не в портрете. В портрете это близко, но еще не установите весь экран на странице. Я начинаю эту щедрость с надеждой, что есть надежный способ получить начальное масштабирование, чтобы соответствовать ширине страницы в любой ориентации или размере экрана.

6 ответов:

следующий код загружает настольную версию домашней страницы Google полностью уменьшена, чтобы соответствовать в пределах webview для меня в Android 2.2 на экране 854×480 пикселей. Когда я переориентирую устройство и он перезагружается в портретной или альбомной ориентации, ширина страницы полностью вписывается в представление каждый раз.

Я понял, почему портретный вид не полностью заполнял видовое окно. По крайней мере, в моем случае, это было потому, что полоса прокрутки всегда показывалась. В дополнение к коду видового экрана выше, попробуйте добавить это:

это приводит к тому, что полоса прокрутки не занимает пространство макета и позволяет веб-странице заполнить видовой экран.

надеюсь, что это помогает

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

отличный ответ, опубликованный Брайаном, не работает для меня в Jelly Bean. Я должен также добавить:

параметр может быть любым процентом, который выполняет, что измененное содержимое меньше ширины веб-представления. Затем setUseWideViewPort (true) расширяет ширину содержимого до максимальной ширины webview.

Источник

Android WebView, масштабирование изображения в соответствии с экраном

что у меня есть: я загружаю изображение с URL-адреса. Я просто делаю (WebView).loadUrl(imageurl, extraheaders)

что я получаю: изображение не отображается на полной ширине WebView, оно имеет пустое пространство вокруг (например, если вы откроете немного iamge в своем настольном браузере)

что я пробовал: установка LayoutAlgorithm в SINGLE_COLUMN. Работает идеально, но масштабирование не работает. (У меня он включен в WebView.getSettings() Не знаю, почему. Настройка setUseWideViewPort(true); загрузить изображение без каких-либо пробелов нет, но он полностью увеличен.

9 ответов

у меня была такая же проблема, и это сработало просто отлично:

изменить: Поскольку это осталось в качестве принятого ответа, вот лучшее решение (все кредит Тони ниже):

вы также можете сделать что-то подобное.

добавить стиль CSS для img в начале (зависит от вашего формата веб-данных) строки данных.

чтобы быстро сделать это с данными в WebView, я сделал это.

это в значительной степени похоже на то, что сказал bansal21ankit, но вместо этого он будет работать на каждом изображении в вашем HTML без дополнительной работы.

Читайте также:  2gis без рекламы для андроид

Edit (уточнение по содержанию сообщения):

вы можете text/html значение вместо post.getContent() из примера.

содержание сообщения вот только пример text/html содержимое, которое загружается из некоторого источника данных, а затем объединяется с style часть, которая делает любое изображение в данном содержимом, чтобы соответствовать экрану.

вы должны масштабировать webView, чтобы соответствовать экрану:

что сработало для меня: я прочитал, что для того, чтобы соответствовать ширине экрана, вы должны добавить это в свой HTML или xml внутри поля:

Так что я сделал, вместо масштабирования и масштабирования изображений, я получил xml, поместил его в StringBuilder, нашел src=»https://blablabla.com/image.png» то есть внутри поля и непосредственно перед подстрокой » src «я вставил» width= » 100%»», затем y установил мой webView с помощью StringBuilder, mi код это:

надеюсь, это поможет, мне потребовалось несколько часов, чтобы понять, как это решить.

немного поздно, но я надеюсь, что это поможет, что вы можете сделать:

это сделает изображение точно таким же, как ширина вашего WebView, остальное вы можете настроить сам WebView.

Источник

enable/disable zoom in Android WebView

There are some methods in WebSettings related to zoom:

I noticed they work differently on some devices. For example, on my Galaxy S pinch to zoom is enabled by default, but on LG P500 it is disabled (And now I don’t know how to enable ONLY pinch to zoom, but hide zooming buttons).

On P500 when I call setBuiltInZoomControls(true) I get both these variants working (multitouch and buttons).

How to enable multitouch zoom and disable zooming buttons on devices such an LG P500? (Also, I know the same problems are on HTC devices)

UPDATE: Here is almost full code for the solution

This code is in my onTouchEvent overridden method of the WebView.

8 Answers 8

On API >= 11, you can use:

Sets whether the on screen zoom buttons are used. A combination of built in zoom controls enabled and on screen zoom controls disabled allows for pinch to zoom to work without the on screen controls

I’ve looked at the source code for WebView and I concluded that there is no elegant way to accomplish what you are asking.

What I ended up doing was subclassing WebView and overriding OnTouchEvent . In OnTouchEvent for ACTION_DOWN , I check how many pointers there are using MotionEvent.getPointerCount() . If there is more than one pointer, I call setSupportZoom(true) , otherwise I call setSupportZoom(false) . I then call the super.OnTouchEvent().

This will effectively disable zooming when scrolling (thus disabling the zoom controls) and enable zooming when the user is about to pinch zoom. Not a nice way of doing it, but it has worked well for me so far.

Note that getPointerCount() was introduced in 2.1 so you’ll have to do some extra stuff if you support 1.6.

We had the same problem while working on an Android application for a customer and I managed to «hack» around this restriction.

I took a look at the Android Source code for the WebView class and spotted a updateZoomButtonsEnabled() -method which was working with an ZoomButtonsController -object to enable and disable the zoom controls depending on the current scale of the browser.

I searched for a method to return the ZoomButtonsController -instance and found the getZoomButtonsController() -method, that returned this very instance.

Although the method is declared public , it is not documented in the WebView -documentation and Eclipse couldn’t find it either. So, I tried some reflection on that and created my own WebView -subclass to override the onTouchEvent() -method, which triggered the controls.

Читайте также:  Mtk droid tools для android

You might want to remove the unnecessary constructors and react on probably on the exceptions.

Although this looks hacky and unreliable, it works back to API Level 4 (Android 1.6).

As @jayellos pointed out in the comments, the private getZoomButtonsController() -method is no longer existing on Android 4.0.4 and later.

However, it doesn’t need to. Using conditional execution, we can check if we’re on a device with API Level 11+ and use the exposed functionality (see @Yuttadhammo answer) to hide the controls.

I updated the example code above to do exactly that.

Источник

android webView увеличение масштаба проблемы

Я разрабатываю приложение, и там есть вкладка webview , на ней я даю увеличить масштаб с .getSettings().setSupportZoom(true); . Однако когда я уменьшаю масштаб (вид становится все меньше и меньше, пока кнопка минус (zoom out)сама не отключается), webview показывает белый фон, который я даже не устанавливаю на макете. как сделать так, чтобы webview при уменьшении масштаба имел некоторое разрешение, которое будет соответствовать высоте экрана? и мне любопытно, можем ли мы сделать так, чтобы элементы управления зумом всегда были видны?(он появляется только тогда, когда мы касаемся экрана и делаем на нем какое-то движение(нажмите, удерживайте и двигайтесь))

вот мой код java от webview

а вот мой код xml

1 ответ

Я показываю изображение в webview. Используя это: final String mimeType = text/html; final String encoding = utf-8; String filePath = file://+file; final String html = ; Log.v(HTML,html); webViewe.loadDataWithBaseURL(fake://not/needed, html.

Как видно на фотографиях. У меня есть QWidget внутри QScrollArea. QWidget действует как виджет рендеринга для изображения ячейки и некоторых векторных контурных данных. Пользователь может выполнять увеличение/уменьшение масштаба, и то, что просто происходит, это изменение масштаба QPainters и.

Похожие вопросы:

У меня есть проблема с границами масштабирования webview. Это код моего webView: WebView web = new WebView(getContext()); web.getSettings().setJavaScriptEnabled(true);.

В моем текущем проекте мне нужно, чтобы мои пользователи могли прокручивать и увеличивать масштаб больших SVG Изображения. Однако главная проблема, с которой я столкнулся, — это ограничение, которое.

Привет guyz им возможность ущипнуть масштабирование изображения в webview его работает должным образом. Увеличение масштаба работает нормально,но проблема в уменьшении масштаба. Изображение.

Я показываю изображение в webview. Используя это: final String mimeType = text/html; final String encoding = utf-8; String filePath = file://+file; final String html =
Увеличение/уменьшение масштаба точки мыши?

Как видно на фотографиях. У меня есть QWidget внутри QScrollArea. QWidget действует как виджет рендеринга для изображения ячейки и некоторых векторных контурных данных. Пользователь может выполнять.

Я разрабатываю приложение с помощью PhoneGap. Я не могу включить встроенное увеличение/уменьшение масштаба в webview. Я использовал следующий код в функции onCreate WebView web = (WebView).

Как увеличить содержимое WebView до определенного масштаба после загрузки содержимого? (Я не хочу перезагружать содержимое.) Я работаю над Android 2.3 и позже.

У меня есть эта анимация, чтобы сделать увеличение THEN и уменьшение масштаба на ImageView:

Источник

Android WebView, масштабирование изображения по размеру экрана

Что у меня есть: я загружаю изображение с URL. Я просто делаю (WebView).loadUrl(imageurl, extraheaders)

Что я получаю: изображение не отображается на всю ширину WebView, вокруг него есть пустое пространство (например, если вы откроете немного iamge в своем настольном браузере)

Что я пробовал: установить LayoutAlgorithm в SINGLE_COLUMN. Работает идеально, но масштабирование не работает. (Я включил его в WebView.getSettings() не знаю почему. Установка setUseWideViewPort(true); загружает изображение без каких-либо пробелов, но оно полностью увеличено.

Читайте также:  Для чего нужна геолокация андроид

9 ответов

Мой друг сделал приложение с помощью javascript и загрузил его на свой сайт. Теперь я пытаюсь обернуть его в webview в android, и это в некотором роде прекрасно работает. Страница 480×320 Но независимо от того, какой размер экрана Я выбираю на Android, внизу на webview есть белое пространство. Я.

Мне нужна общая функциональность масштабирования & панорамирования вокруг изображения, которое больше экрана устройства. После долгих поисков я остановился на WebView в качестве решения, используя его встроенный зум & pan. Есть проблема, которую я не смог решить с помощью WebView: я могу.

Вы также можете сделать что-то подобное.

Добавьте стиль CSS для img в начале (зависит от формата ваших веб-данных) строки данных.

Чтобы быстро сделать это с данными в WebView, я сделал это.

Это очень похоже на то, что сказал bansal21ankit, но вместо этого он будет работать на каждом изображении в вашем HTML без дополнительной работы.

Правка (уточнение содержания сообщения):

Вы можете иметь любое значение text/html вместо post.getContent() из примера.

Содержание публикации здесь-это просто пример содержимого text/html , которое загружается из некоторого источника данных, а затем объединяется с частью style , которая делает любое изображение в данном содержимом подходящим для экрана.

У меня была та же проблема, и это сработало просто отлично:

Редактировать: Поскольку это осталось общепринятым ответом, вот лучшее решение (вся заслуга Тони ниже):

вы должны масштабировать webView, чтобы он соответствовал экрану:

Это немного поздно, но я надеюсь, что это поможет, что вы можете сделать, это:

это сделает изображение точно таким же, как ширина вашего WebView, rest вы можете настроить сам WebView.

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

Поэтому я сделал следующее: вместо масштабирования и масштабирования изображений я получил xml, поместил его в StringBuilder, нашел src=»https://blablabla.com/image.png», который находится внутри поля, и непосредственно перед подстрокой «src» я вставил «width=»100%»»,, а затем установил свой webView с StringBuilder, код mi это:

Надеюсь, это поможет, мне потребовалось несколько часов, чтобы понять, как это решить.

Увеличьте масштаб с помощью WebView (на Android

Эта работа для меня: webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

Я думаю, что это исправит вашу проблему:-

Этот Код Работает Для Меня :

Похожие вопросы:

Я показываю HTML в webview. HTML выглядит великолепно,но я не могу увеличить масштаб. Чтобы включить масштабирование, я должен включить Scales Page to fit. Если я включу это, страницы будут.

У меня есть изображение размером 480 на 40 пикселей. Я хотел бы показать это изображение в ImageView без необходимости масштабировать его по размеру. Пример: если мой экран имеет ширину всего.

Есть ли способ масштабировать текст так, чтобы он занимал почти одинаковую площадь экрана независимо от размера устройства? Я обнаружил, что текст на устройстве размером iPad слишком мал по.

Мой друг сделал приложение с помощью javascript и загрузил его на свой сайт. Теперь я пытаюсь обернуть его в webview в android, и это в некотором роде прекрасно работает. Страница 480×320 Но.

Мне нужна общая функциональность масштабирования & панорамирования вокруг изображения, которое больше экрана устройства. После долгих поисков я остановился на WebView в качестве решения.

Увеличьте масштаб с помощью WebView (на Android

Источник

Оцените статью