2012-02-18 20 views
7

Tôi đang sử dụng chế độ xem web trong ứng dụng Android của mình, tuy nhiên sau khi tải xong - tôi có thể phát hiện thông qua onPageFinished (xem webView, URL chuỗi) - trang tiếp tục phát triển vô cùng chiều cao.WebView mở rộng vô hạn - làm thế nào điều này có thể được ngăn chặn?

Làm cách nào để ngăn điều này xảy ra?

Đây là những gì tôi làm.

  1. Tôi có mẫu trang chung chứa ScrollView. Chiều rộng và chiều cao được đặt để khớp với cấp độ gốc. Bên trong ScrollView có một số yếu tố phổ biến cho tất cả các hoạt động tôi tạo ra. Một trong số đó là LinearLayout nơi tôi chèn tất cả nội dung của người dùng.

    ..... 
    <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. Trong trường hợp này nội dung là một trang web, mà tải bản đồ của Google bằng cách sử dụng API web di động. Dưới đây là file layout

    <?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. Dưới đây là đoạn code của hoạt động của tôi rằng initialises webview

    .... 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. Cuối cùng, khi tôi tải các bản đồ qua wv.loadUrl ("......");

sau khi trang hoàn tất việc tải tôi nhận được các bản ghi sau đây và webview phát triển trong một vòng lặp vô hạn

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

tôi đã nhận thấy rằng điều này xảy ra khi trang chứa jQuery. Nhưng cùng một trang tải tốt trong trình duyệt chứng khoán.

Bất kỳ ý tưởng nào tại sao điều này xảy ra và cách này có thể được sửa chữa?

Bất kỳ trợ giúp có ý nghĩa nào được đánh giá cao ... Cảm ơn.

Trả lời

-4

Bạn có thử android: layout_height = "50dip"

giá trị đèo cho chiều cao thuộc tính chứ không phải sau đó sử dụng wrap_content

+0

Điều đó tất nhiên ngăn cản việc xem web từ ngày càng phát triển, nhưng tôi không biết chiều dài của nội dung trước, vì vậy ấn định chiều cao nếu WebView trong trường hợp của tôi không phải là một lựa chọn ngay từ đầu. –

+0

Nhân tiện, tôi đã cố gắng tải "http://m.yahoo.com" một cách đơn giản (trang nội dung nặng và nặng) - trang tải và lượt xem web thay đổi kích thước để vừa với nội dung hoàn hảo mà không gặp bất kỳ sự cố nào . Vì vậy, tôi đoán có một lần xem web + kết hợp lỗi jQuery. –

+1

Vâng, có vẻ như ScrollView và WebView không đi cùng nhau - thời gian. Tôi đã thử sử dụng chế độ xem web bên ngoài chế độ xem cuộn (thay đổi cấu trúc của các mẫu dev của tôi khá nhiều) - nó hoạt động. Tuy nhiên, nó không giải thích thực tế rằng sự phát triển vô hạn chỉ xảy ra ở các trang có jQuery –

5

Đây là một câu trả lời cuối nhưng hy vọng nó sẽ giúp một ai đó. Tôi đã trải qua những vấn đề tương tự và thủ phạm là CSS cơ bản này:

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

Sự thay đổi này sửa chữa vấn đề:

bài
body { 
    width: 100%;  
    height: auto; 
} 
2

Blog này giải quyết vấn đề của tôi. Tôi nghĩ nó sẽ giúp ích.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))); 
     } 
    }); 
} 
Các vấn đề liên quan