2013-04-09 4 views
8

Salut, j'ai WebView et je veux qu'il convient à l'écran, de sorte que l'utilisateur ne doit pas faire défiler horizontalement ou verticalementAndroid WebView adapter tout le contenu à l'écran

J'ai cherché avant, beaucoup le suggèrent les éléments suivants, mais elle limite seulement la largeur, l'utilisateur devra encore faire défiler verticalement:

engine = (WebView) (findViewById(R.id.webView1)); 
engine.loadUrl(www.example.com); 
engine.getSettings().setLoadWithOverviewMode(true); 
engine.getSettings().setUseWideViewPort(true); 

J'ai essayé une autre méthode, en utilisant la méthode mise à l'échelle, mais il ne fonctionne pas ..... je suis arrivé à la largeur de la fenêtre (1024 pixels) et la largeur du contenu Web était également de 1024 pixels !! Donc, la mise à l'échelle n'a pas fonctionné ... Y at-il une méthode pour obtenir l'échelle correcte?

Ou .... existe-t-il un autre moyen? .... MERCI !!

// get the window width and height 
    Point outSize = new Point(); 
    getWindowManager().getDefaultDisplay().getSize(outSize); 
    width = outSize.x; 
    height = outSize.y; 
    Log.i("Menuboard", "width: " + Integer.toString(width) + ", height: " 
      + Integer.toString(height)); 

WebViewClient client = new WebViewClient() { 

     public void onPageFinished(WebView view, String url) { 
      int x = engine.getWidth(); 
      int y = engine.getHeight(); 

      Log.i("Menuboard", "web width: " + Integer.toString(x) 
        + ", height: " + Integer.toString(y)); 

      int scale1 = width * 100/x; 
      int scale2 = height * 100/y; 

      Log.i("Menuboard", "Scale1: " + Integer.toString(scale1) 
        + ", Scale2: " + Integer.toString(scale2)); 

      if (scale1 < scale2) { 
       engine.setInitialScale(scale1); 
       Log.i("Menuboard", "scale1"); 
      } else if (scale1 > scale2) { 
       engine.setInitialScale(scale2); 
       Log.i("Menuboard", "scale2: " + Integer.toString(scale2)); 
      } 
     } 
    }; 

    engine = (WebView) (findViewById(R.id.webView1)); 
    engine.loadUrl(string); 
    engine.getSettings().setBuiltInZoomControls(true); 
    engine.setPadding(0, 0, 0, 0); 
      engine.setWebViewClient(client); 

Juste quelques notes:

à l'échelle WebView:

engine = (WebView) (findViewById(R.id.webView1)); 
engine.loadUrl(www.example.com); 
engine.getSettings().setBuiltInZoomControls(true); 
engine.setPadding(0, 0, 0, 0); 
engine.setInitialScale(50); // 0 - 100 where 100 is full scale 

Pour obtenir la largeur de la fenêtre et la hauteur:

Point outSize = new Point(); 
getWindowManager().getDefaultDisplay().getSize(outSize); 
width = outSize.x; 
height = outSize.y; 
+0

vérifier ce lien: http://stackoverflow.com/a/9756084/1168654 et http://stackoverflow.com/questions/11922861/how-to-justify-text-on-a-textview- made-easy-android/11922862 # 11922862 et http://stackoverflow.com/questions/15894644/how-we-get-the-text-of-a-texview-to-be-justified-dynamically/15894704#15894704 –

Répondre

1

Pour faire WebView étendre à tout l'écran , ajoutez le webview dans votre mise en page d'activité xml et assurez-vous que vous définissez les layout_width et layout_height à fill_parent. Voici un exemple simple:

<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> 
5

utiliser les méthodes suivantes.

webview.getSettings().setUseWideViewPort(true); 
webview.getSettings().setLoadWithOverviewMode(true); 
Questions connexes