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

StackOverflow https://stackoverflow.com/questions/3808532

Вопрос

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

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

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

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

Спасибо

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

Это было полезно?

Решение

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

Browserlayout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

     <WebView android:id="@+id/webview"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent" />
</LinearLayout>

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

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

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

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

Отличный ответ, размещенный Brian, не работает для меня в желе бобов. Я должен добавить также:

browser.setInitialScale(30);

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

Пытаться Использование широкого видового вида:

 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), поведение для ответа Брайана не так, как мне это нравится. Он ставит много пробелов вокруг некоторых изображений на более старые телефоны, но работает на моем новее. Вот моя альтернатива, с помощью этого ответа: Может ли WebView Android автоматически изменить размер огромных изображений? Алгоритм макета 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);
}

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

<style>img{display: inline; height: auto; max-width: 100%;}</style>

В результате все изображения масштабируются, чтобы соответствовать ширину представления веб-представления.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top