2012-02-18 8 views
7

Estoy usando una vista web en mi aplicación de Android, sin embargo, después de que termine de cargarse, que puedo detectar mediante onPageFinished (vista web de WebView, URL de cadena), la página continúa creciendo en altura de forma infinita.WebView se expande infinitamente: ¿cómo se puede evitar esto?

¿Cómo puedo evitar que esto suceda?

Esto es lo que hago.

  1. Tengo una plantilla de página genérica que contiene un ScrollView. El ancho y el alto se establecen para que coincidan con los padres. Dentro de ScrollView hay varios elementos comunes para todas las actividades que creo. Uno de ellos es LinearLayout donde inserto todo el contenido del usuario.

    ..... 
    <ScrollView 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_centerInParent="true" 
    android:layout_margin="0dp" 
    android:padding="0dp" 
    android:scrollbars="none" 
    > 
    
    ...... 
    
    <LinearLayout 
         android:id="@+id/content" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_margin="0dp" 
         android:padding="0dp" 
         android:orientation="vertical"> 
    
         //EVERY USER CONTENT GOES HERE  
    
    </LinearLayout> 
    
    
    ...... 
    
    </ScrollView> 
    

    .....

  2. En este caso particular, el contenido es una página WEB, que carga los mapas de Google con la API de web móvil. Aquí está el archivo de diseño

    <?xml version="1.0" encoding="utf-8"?> 
    
        <WebView 
         android:id="@+id/maps" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_centerInParent="true" 
         android:layout_margin="0dp" 
         android:padding="0dp" 
        /> 
    
  3. Aquí está el código de mi actividad que inicializa la vista web

    .... WebView WV = (WebView) this.content.findViewById (R.id.maps) ;

    WebSettings ws = wv.getSettings();

    ws.setPluginState(PluginState.ON); 
    ws.setSupportZoom(false); 
    ws.setLightTouchEnabled(true); 
    ws.setDomStorageEnabled(true); 
    ws.setAppCacheMaxSize(1024 * 1024 * 8); 
    ws.setAppCachePath(context.getCacheDir().getAbsolutePath()); 
    ws.setAppCacheEnabled(true); 
    ws.setAllowFileAccess(true); 
    ws.setCacheMode(WebSettings.LOAD_NORMAL); 
    ws.setJavaScriptEnabled(true); 
    
    wv.setInitialScale(0); 
    wv.addJavascriptInterface(new Object(), "Android"); 
    wv.setKeepScreenOn(true); 
    
  4. Finalmente, cuando la carga a través de los mapas wv.loadUrl ("......");

después de la página termine de cargar consigo los siguientes registros y la vista web crece en un bucle infinito

02-18 14:16:06.195: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.394: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.480: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.527: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.582: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.632: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.683: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.734: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.785: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.875: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:06.957: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.058: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.332: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.398: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.449: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.496: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.554: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.605: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.652: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.707: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.742: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.792: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.839: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.902: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:07.949: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.015: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.066: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.113: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.164: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.214: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.250: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.300: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.335: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.386: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.437: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.484: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.531: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.566: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.613: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.667: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.714: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.750: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.847: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.902: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:08.949: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.003: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.035: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.085: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.121: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.167: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.218: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.253: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.304: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.367: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.417: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.476: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.523: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.585: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.632: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.664: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.710: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.765: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.812: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.863: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.894: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.957: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:09.992: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.042: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.097: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.148: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.179: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.226: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.277: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.328: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.378: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.410: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.460: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.511: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.546: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.597: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.648: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.679: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.730: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.781: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.835: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.886: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.925: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:10.976: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.011: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.066: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.125: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.183: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.214: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.265: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.320: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.371: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.402: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.453: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.507: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.558: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.589: VERBOSE/webview(10904): OnSizeChanged: Enter 
02-18 14:16:11.644: VERBOSE/webview(10904): OnSizeChanged: Enter 
.......... This goes on ........... 

me he dado cuenta que esto ocurre cuando la página contiene jQuery. Pero la misma página carga bien en el navegador de valores.

¿Alguna idea de por qué sucede esto y cómo se puede rectificar?

Se agradece cualquier ayuda significativa ... Gracias.

Respuesta

-4

¿Usted intentó androide: layout_height = "50dip"

valor de aprobación para la altura atributo en lugar de utilizar wrap_content

+0

Eso, por supuesto, impide la vista web de cada vez mayor, pero no sé la longitud del contenido de antemano, para la fijación de la altura si el WebView en mi caso no era una opción desde el principio. –

+0

Por cierto, intenté simplemente cargar "http://m.yahoo.com" (una página bastante pesadísima y con muchos javascript): la página se carga y la vista web cambia de tamaño para adaptarse perfectamente al contenido sin ningún problema . Así que supongo que hay una combinación de error web view + jQuery. –

+1

Bueno, parece que ScrollView y WebView no van juntos: punto. He intentado usar la vista web fuera de la vista de desplazamiento (lo que cambió bastante la estructura de mis plantillas de desarrollo) - funcionó. Aún así, no explica el hecho de que el crecimiento infinito ocurre solo en las páginas que tienen jQuery –

5

Ésta es una respuesta tardía pero espero que ayude a alguien. Que estaba experimentando el mismo problema y el culpable era el CSS que subyace:

body { 
    width: 100%;  
    height: 100%; 
} 

Este cambio corrige el problema:

posterior
body { 
    width: 100%;  
    height: auto; 
} 
2

Este blog resolvió mi problema. Creo que va a ayudar.http://capdroid.wordpress.com/2014/08/07/resizing-webview-to-match-the-content-size/

private void setupWebView() { 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onPageFinished(WebView view, String url) { 
      webView.loadUrl("javascript:MyApp.resize(document.body.getBoundingClientRect().height)"); 
      super.onPageFinished(view, url); 
     } 
    }); 
    webView.addJavascriptInterface(this, "MyApp"); 
} 

@JavascriptInterface 
public void resize(final float height) { 
    MyActivity.this.runOnUiThread(new Runnable() { 
     @Override 
     public void run() { 
      webView.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels, (int) (height * getResources().getDisplayMetrics().density))); 
     } 
    }); 
} 
Cuestiones relacionadas