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

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

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

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

У кого-нибудь есть какие-нибудь выводы?

благодаря

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

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

    BrowserLayout.xml:

         

    Browser.java:

     import android.app.Activity; import android.os.Bundle; import android.webkit.WebView; public class Browser extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.BrowserLayout); String loadUrl = "http://www.google.com/webhp?hl=en&output=html"; // initialize the browser object WebView browser = (WebView) findViewById(R.id.webview); browser.getSettings().setLoadWithOverviewMode(true); browser.getSettings().setUseWideViewPort(true); try { // load the url browser.loadUrl(loadUrl); } catch (Exception e) { e.printStackTrace(); } } } 

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

      browser.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); browser.setScrollbarFadingEnabled(false); 

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

    Надеюсь это поможет

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

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

     browser.setInitialScale(30); 

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

    Попробуйте использовать широкий видовой экран :

      webview.getSettings().setUseWideViewPort(true); 

    // для изображений и swf-видео используйте ширину как «100%» и высоту как «98%»,

     mWebView2.getSettings().setJavaScriptEnabled(true); mWebView2.getSettings().setLoadWithOverviewMode(true); mWebView2.getSettings().setUseWideViewPort(true); mWebView2.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); mWebView2.setScrollbarFadingEnabled(true); 

    Я работаю с загрузкой изображений для этого ответа, и я хочу, чтобы их масштабировали до ширины устройства. Я нахожу, что для старых телефонов с версиями, меньшими, чем API 19 (KitKat), поведение для ответа Брайана не совсем так, как мне нравится. Он помещает много пробелов вокруг некоторых изображений на старых телефонах, но работает на моем новом. Вот моя альтернатива, с помощью этого ответа: Может ли Android WebView автоматически изменять размеры огромных изображений? Алгоритм компоновки SINGLE_COLUMN устарел, но он работает, и я чувствую, что он подходит для работы со старыми веб-просмотрами.

     WebSettings settings = webView.getSettings(); // Image set to width of device. (Must be done differently for API < 19 (kitkat)) if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) { if (!settings.getLayoutAlgorithm().equals(WebSettings.LayoutAlgorithm.SINGLE_COLUMN)) settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); } else { if (!settings.getLoadWithOverviewMode()) settings.setLoadWithOverviewMode(true); if (!settings.getUseWideViewPort()) settings.setUseWideViewPort(true); } 
    Давайте будем гением компьютера.