78 votes

Comment définir le zoom / largeur initial pour une vue Web

J'essaie d'obtenir la WebView d'avoir le même comportement que le navigateur android. Le navigateur s'ouvre et affiche toutes les pages d'une manière qui essaie de faire correspondre leur largeur de l'écran. Cependant, le comportement par défaut de la WebView est de commencer à 100% de pixels à l'échelle de sorte qu'il commence un zoom avant sur le coin en haut à gauche.

J'ai passé les deux dernières heures à essayer de trouver un moyen d'obtenir la WebView à l'échelle de la page à l'écran comme il le fait dans le navigateur, mais je ne suis pas du tout avoir de la chance. Quelqu'un a trouvé un moyen pour accomplir cette?

Je vois, c'est un paramètre appelé setLoadWithOverviewMode, mais qui ne semble pas faire quoi que ce soit. J'ai également expérimenté avec setInitialScale mais sur différentes tailles d'écran et la page web tailles qui ne sera pas aussi gracieux que les navigateurs de mise à l'échelle.

L'un des indices?

Merci

EDIT: Brian méthode semble fonctionner lorsque le téléphone en mode paysage, mais pas dans le portrait. En portrait, il est proche, mais ne s'adapte toujours pas la totalité de l'écran dans la page. J'ai commencé cette abondance avec l'espoir il y a un moyen infaillible pour obtenir le zoom initial pour adapter la page à la largeur de la page, dans n'importe quelle orientation ou la taille de l'écran.

162voto

Brian Points 7157

Le code suivant charge la version de bureau de la page d'accueil Google entièrement zoomée pour correspondre au webview pour moi dans Android 2.2 sur un écran de 854 x 480 pixels. Lorsque je réoriente le périphérique et que celui-ci est rechargé en portrait ou en paysage, la largeur de la page est entièrement adaptée à la vue.

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

20voto

Dean Points 171

J’ai compris pourquoi l’affichage portrait n’a pas été totalement remplir la fenêtre d’affichage. Au moins dans mon cas, c’est parce que la barre de défilement se montrait toujours. En plus de la fenêtre code ci-dessus, essayez d’ajouter ceci :

Ceci entraîne la barre de défilement de ne pas prendre un espace de mise en page et permet à la page Web remplir la fenêtre d’affichage.

Espérons que cette aide

12voto

Ivan BASART Points 92

C'est une vieille question, mais permettez-moi d'ajouter un détail au cas où plus de gens comme moi arriveraient ici.

L'excellente réponse publiée par Brian ne fonctionne pas pour moi dans Jelly Bean. Je dois ajouter aussi:

 browser.setInitialScale(30);
 

Le paramètre peut être n’importe quel pourcentage permettant au contenu redimensionné de dépasser la largeur de la vue Web. Ensuite, setUseWideViewPort (true) étend la largeur du contenu au maximum de la largeur de la vue Web.

7voto

Brian Points 7157

Essayez d’ utiliser une fenêtre large :

  webview.getSettings().setUseWideViewPort(true);
 

3voto

Ashish Anand Points 689

// pour les images et les vidéos swf, utilise la largeur comme "100%" et la hauteur comme "98%"

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X