web-dev-qa-db-fra.com

Ajuster le contenu d'une page Web dans une vue Web (Android)

Question simple.

J'essaie d'étirer le contenu d'une vue Web afin que la page Web entière à l'intérieur soit visible. c'est-à-dire pas de défilement. J'ai regardé à travers les documents, mais je ne trouve aucune méthode à part les contrôles de zoom et setinitialscale.

Le problème avec setinitialscale dans ce cas est qu'il fonctionne différemment pour différents sites.

Exemple: 1: wikipedia se chargera comme prévu avec un zoom suffisamment éloigné. 2: Google n'affichera cependant que le centre de la page.

Voici l'extrait de code que j'ai

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

Cela semble être une alternative à ce que j'essaie de faire, mais je n'arrive pas à le faire zoomer suffisamment loin.

29
OVERTONE

Les gens pourront donc l'utiliser comme un tutoriel à l'avenir.

Il existe de nombreuses façons de gérer les zooms dans Android et les pages d'ajustement. Cela peut parfois être assez capricieux et certaines méthodes fonctionnent mieux que d'autres.

Pour la plupart des gens, utilisez simplement ceci:

WebView x;

x.setInitialScale(1);

C'est le zoom le plus complet possible. Mais pour certains sites, cela semble tout simplement laid.

Ce fut la deuxième version que j'ai trouvée

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

C'est un Nice tout rond qui semble juste assez dézoomer pour beaucoup mais toujours pas ce que je cherchais.

Et voici la solution finale que j'ai.

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

Fondamentalement, ce que cela fait est répondu dans une autre question comme celle-ci.

 setLoadWithOverviewMode(true) 

Charge le WebView complètement dézoomé

setUseWideViewPort(true)

Rend la vue Web une fenêtre normale (comme un navigateur de bureau normal), tandis que si elle est fausse, la vue Web aura une fenêtre contrainte à ses propres dimensions (donc si la vue Web est 50px * 50px la fenêtre sera de la même taille)

104
OVERTONE

J'ai essayé toutes les méthodes ci-dessus mais dans mon cas, rien n'a fonctionné jusqu'à ce que je découvre:

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

supprimez cette ligne dans le fichier html ou changez simplement user-scalable = yes, et tout ira bien. Cela m'a pris presque un jour pour découvrir cette ligne folle.

10
Hoang Nguyen Huu