2013-06-11 5 views
8

J'ai un problème avec WebView. J'ouvre une page Web dans ce WebView et il ne défilera pas dans Android 2.x, mais il défilera dans Android 3.x +.WebView ne défilera pas dans Android 2.x

Toute idée que puis-je faire pour résoudre ce problème?

Voici la configuration que j'utilise pour cette WebView:

wView = (WebView) findViewById(R.id.webView1); 
wView.getSettings().setJavaScriptEnabled(true); 
wView.setHorizontalScrollBarEnabled(true); 

Et dans la mise en page:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#00000000" 
    tools:context=".MainActivity" 
    android:orientation="vertical"> 

    <WebView 
     android:id="@+id/webView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="horizontal" /> 

</LinearLayout> 
+0

Est-ce le cas pour tous les sites que vous essayez ou juste cette page en particulier? –

+0

C'est pour un site. – Styler2go

+1

Potentiellement c'est quelque chose dans le javascript ou le CSS du site qui n'est pas supporté par les anciens navigateurs. Essayez de tester avec le navigateur natif sur l'ancien appareil. Est-ce que ça marche là-bas? J'ai le sentiment que ce n'est pas ton code ... –

Répondre

2

En cas si vous avez encore problème

WebView wv = (WebView) v.findViewById(R.id.webview); 
    wv.getSettings().setSupportZoom(true); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    WebSettings settings = wv.getSettings();   
    settings.setUseWideViewPort(true); 
    settings.setJavaScriptEnabled(true); 
    settings.setSupportMultipleWindows(true); 
    settings.setJavaScriptCanOpenWindowsAutomatically(true); 
    settings.setLoadsImagesAutomatically(true); 
    settings.setLightTouchEnabled(true); 
    settings.setDomStorageEnabled(true); 
    settings.setLoadWithOverviewMode(true); 
    wv.loadUrl("http://www.google.com"); 

en cas si vous voulez montrer ProgressBar pendant le chargement encore utilisation

 ProgressBar pb = (ProgressBar).findViewById(R.id.webview_progressBar1); 

    wv.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       return super.shouldOverrideUrlLoading(view, url); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 

       super.onPageFinished(view, url); 

       pb.setVisibility(View.INVISIBLE); 

      } 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 

       super.onPageStarted(view, url, favicon); 

       pb.setVisibility(View.VISIBLE); 

      } 

     }); 

espérons que cette aide ...

2

Que faire si vous essayez de définir ceci:

wView.getSettings().setUseWideViewPort(true); 
2

vous pourriez essayez d'entourer votre webview à l'intérieur de scrollview:

<LinearLayout ...... > <HorizontalScrollView ..... > <WebView .... /> </HorizontalScrollView> </LinearLayout>

6

Quelque chose dans le CSS ou javascript de ce site n'est pas supporté par les anciens navigateurs Android, ce n'est pas lié à votre code.

Il est un peu trop large pour répondre définitivement - vous aurez besoin de tester la conformité de votre site sur différents navigateurs. Si vous utilisez des bibliothèques spécifiques sur votre site, vous devez vérifier leur compatibilité.

Voici quelques liens qui peuvent aider:

+0

Puis-je supprimer les fonctions non prises en charge que je peux faire défiler? Il y a quelques positions d'éléments fixes; ce qui pourrait être le problème. – Styler2go

+0

Bien sûr. Vraiment la seule option est que j'espère que vous avez la possibilité de changer le site, vous devrez essayer et essayer un peu. Impossible de dire avec certitude ce qui le cause d'ici! –

+0

Si ce n'est pas mon site, comment puis-je modifier le code HTML sur le périphérique? – Styler2go

1

Modifier votre XML à utiliser ScrollView à la place. Marchera.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#00000000" 
tools:context=".MainActivity" 
android:orientation="vertical"> 

    <ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
     <WebView 
     android:id="@+id/webView1" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:scrollbars="horizontal" /> 
    </ScollView> 
</LinearLayout> 
1

Il y a beaucoup d'amélioration est venu en 3x +, il y a trop de limitation de WebView android http://androiddeveloperuser.blogspot.in/2011/05/webview-part-1-capabilities-and.html

ici, je vais à la ligne court passé de contenir écrit dans un blog de Android écrit sur la limitation et l'avantage

Il y a beaucoup d'événements qui ne peuvent être interceptées, et il y a limitation dans les comportements peuvent être surchargées, ce qui limite la personnalisation de ce composant et en changeant le comportement par défaut de ce composant difficile.

Questions connexes