Подгонка содержимого веб-страницы внутри веб-просмотра (Android) - PullRequest
28 голосов
/ 29 января 2012

Простой вопрос.

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

Проблема с setinitialscale в этом случае заключается в том, что он работает по-разному для разных сайтов.: Википедия будет загружаться, как и ожидалось, с увеличением достаточно далеко.2: Google, однако, покажет только центр страницы.

Вот фрагмент кода, который у меня есть

    test1 = (WebView) findViewById(R.id.webview_test_1);
    test2 = (WebView) findViewById(R.id.webview_test_2);
    test3 = (WebView) findViewById(R.id.webview_test_3);

    test1.getSettings().setJavaScriptEnabled(true);
    test2.getSettings().setJavaScriptEnabled(true);
    test3.getSettings().setJavaScriptEnabled(true);

    test1.setInitialScale(12);
    test2.setInitialScale(12);
    test3.setInitialScale(12);

    test1.loadUrl("http://developer.android.com/resources/tutorials/views/hello-tablelayout.html");
    test2.loadUrl("http://www.wikipedia.org/");
    test3.loadUrl("http://www.google.com");

test1.getSettings().setDefaultZoom(ZoomDensity.FAR);

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

Ответы [ 2 ]

104 голосов
/ 30 января 2012

Чтобы люди могли использовать это как учебник в будущем.

Существует множество способов обработки масштабов на андроиде и подгонки страниц. Иногда это может быть довольно темпераментно, и некоторые методы работают лучше, чем другие.

Для большинства людей, просто используйте это:

WebView x;

x.setInitialScale(1);

Возможно дальнейшее увеличение. Но для некоторых сайтов это выглядит просто ужасно.

Это была вторая найденная мной версия

test1.getSettings().setDefaultZoom(ZoomDensity.FAR);

Это неплохо, все вокруг, чем, кажется, просто уменьшить масштаб достаточно много, но все еще не то, что я искал.

А теперь вот окончательное решение, которое у меня есть.

x.getSettings().setLoadWithOverviewMode(true);
x.getSettings().setUseWideViewPort(true);

В основном, что они делают, ответили на другой вопрос, подобный этому.

 setLoadWithOverviewMode(true) 

Загружает WebView полностью уменьшенным

setUseWideViewPort(true)

Делает веб-просмотр нормальным окном просмотра (например, обычным настольным браузером), в то время как при значении false веб-просмотр будет иметь видовой экран, ограниченный собственными размерами (поэтому, если веб-просмотр 50px * 50px, область просмотра будет того же размера)

10 голосов
/ 18 октября 2013

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

   <meta name="viewport" content="user-scalable=no"/>

удалите эту строку в html-файле или просто измените user-scalable = yes, и все будет хорошо. Мне понадобился почти один день, чтобы найти эту сумасшедшую линию.

...