Frage

Ich versuche, die WebView zu bekommen ein ähnliches Verhalten wie dem Android-Browser zu haben. Der Browser öffnet alle Seiten in einer Weise, die ihre Breite an den Bildschirm anzupassen versucht. Allerdings ist das Standardverhalten des WebView bei einer 100% Pixel-Skala zu beginnen, damit es in auf der linken oberen Ecke gezoomt beginnt.

Ich habe die letzten paar Stunden damit verbracht, einen Weg zu finden, die WebView erhalten Sie die Seite auf den Bildschirm zu skalieren, wie es im Browser tut, aber ich habe kein Glück. Hat jemand einen Weg gefunden, diese?

zu erreichen

ich sehe, ist eine Einstellung namens setLoadWithOverviewMode, aber das schien nicht überhaupt etwas zu tun. Ich habe auch mit setInitialScale aber auf unterschiedliche Bildschirmgrößen und Web-Seitengrößen experimentiert, die nicht so graziös sein werden, wie der Browser Skalierung.

haben Jeder irgendwelche Kabel?

Danke

EDIT: Brian Methode scheint zu funktionieren, wenn das Telefon in der Landschaft, aber nicht im Portrait. Im Portrait ist es in der Nähe, aber immer noch nicht den gesamten Bildschirm auf der Seite paßt. Ich Start dieses Kopfgeld mit der Hoffnung, es ist ein sicherer Weg, den anfänglichen Zoom paßt die Seite an die Breite der Seite in jeder Ausrichtung oder Bildschirmgröße zu erhalten.

War es hilfreich?

Lösung

Der folgende Code lädt die Desktop-Version der Google-Startseite vollständig herausgezoomt, um innerhalb der webview für mich in Android 2.2 auf einem 854x480 Pixel Bildschirm anzupassen. Wenn ich das Gerät neu ausrichten und es lädt in Hoch- oder Querformat, die Seitenbreite paßt vollständig in der jede Ansicht.

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

Andere Tipps

ich herausgefunden, warum das Porträt Blick nicht völlig wurde das Ansichtsfenster zu füllen. Zumindest in meinem Fall war es, weil die Scrollbar immer zeigte. Neben dem Ansichtsfenster angezeigten Code, versuchen Sie dies:

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

Dies bewirkt, dass die Bildlaufleiste, um nicht das Layout Platz in Anspruch nehmen, und ermöglicht die Webseite das Ansichtsfenster füllen.

Hope, das hilft

Es ist und alte Frage, aber lassen Sie mir ein Detail hinzufügen nur für den Fall mehr Leute wie ich hier ankommen.

Die ausgezeichnete Antwort von Brian geschrieben arbeitet nicht für mich in Jelly Bean. Ich habe auch hinzufügen:

browser.setInitialScale(30);

Der Parameter kann ein beliebiger Anteil sein THA erreicht, daß die Größe veränderte Gehalt kleiner ist als die Breite webview. Dann setUseWideViewPort (true) erweitert die Inhaltsbreite zu dem Maximum der Webansicht Breite.

Versuchen Sie mit einem breiten Ansichtsfenster :

 webview.getSettings().setUseWideViewPort(true);

// für Bilder und SWF-Videos verwenden Breite als "100%" und die Höhe als "98%"

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

Ich arbeite mit Bildern für diese Antwort zu laden und ich möchte, dass sie die Breite des Gerätes skaliert werden. Ich finde, dass für ältere Handys mit Versionen kleiner als API 19 (KitKat), Antwort das Verhalten für Brian ist nicht ganz so ich mag es. Es bringt eine Menge Leerzeichen um einige Bilder auf älteren Handys, aber funktioniert auf meinem neueren. Hier ist meine Alternative, mit der Hilfe von dieser Antwort: Can Android WebView automatisch enorme Größe von Bildern? ist der Layout-Algorithmus SINGLE_COLUMN veraltet, aber es funktioniert, und ich fühle mich wie es für die Arbeit mit älteren WebViews geeignet ist.

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

Wenn Sie die Web-Ansicht haben herausgefunden, aber Ihre Bilder sind immer noch aus Maßstab, die beste Lösung gefunden I ( hier ) wurde einfach das Voranstellen das Dokument mit:

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

Als Ergebnis alle Bilder skaliert werden, um die Web-Ansicht Breite entsprechen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top