2014-05-05 23 views
8

Tôi đang làm việc trên chế độ xem có chứa chế độ xem web, hoạt động hoàn hảo trên 2.3, 4.1, nhưng khi tôi thử trên trình mô phỏng 4.4, nó hiển thịXem quá lớn để vừa với bản vẽ bộ nhớ cache trên Webview bên trong scrollview

View too large to fit into drawing cache, needs 5744640 bytes, only 3932160 available 

Chế độ xem web chỉ để trống.

Và đó là cách bố trí

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:overScrollMode="never" > 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical" 
      android:padding="5dp" > 

      <TextView 
       android:id="@+id/newsTitle" 
       android:textSize="18sp" 
       android:textStyle="bold" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/last_update" /> 

      <WebView 
       android:id="@+id/newsContent" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:text="@string/last_update" /> 

      <TextView 
       android:id="@+id/newsDate" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="@string/last_update" /> 
     </LinearLayout> 
    </ScrollView> 

</LinearLayout> 

Tôi cố gắng để sử dụng mywebView.setDrawingCacheEnabled(false); nhưng nó chỉ trả lại cảnh báo tương tự.

Ngoài ra, tôi thấy vấn đề xảy ra khi trang web có kích thước trên màn hình, nhưng khi tôi hiển thị, tôi thấy bố cục của web hơi khác, trên 2,3, 4,1, nó có thể đơn giản bắt đầu dòng mới nếu từ đó là vượt quá trang, tuy nhiên, trong 4.4 nó không, vì vậy một phần của từ là ra khỏi màn hình.

Cách khắc phục? Cảm ơn

+0

Cuối cùng tôi từ bỏ, vì nó là lỗi trong android, chỉ cần đảm nền của tôi trắng và nền webview trắng, mọi thứ hoàn hảo sau đó – user782104

+0

Hãy thử largeHeap = "true" trong thẻ của bạn trong manifest. Nó cho phép ứng dụng của bạn sử dụng phần lớn hơn một chút so với thông thường (Vì vậy kích thước bộ nhớ cache có thể tăng lên). Nó có thể giúp bạn. Chỉ cần thử và cho tôi biết. – Sripathi

+0

Cảm ơn sự giúp đỡ của bạn, vẫn còn lỗi tương tự – user782104

Trả lời

4

Đề nghị của tôi là cung cấp cho chiều cao bố trí để webview để nó sẽ không vượt quá chiều cao quy định của bạn

<LinearLayout 
      android:id="@+id/webview1" 
      android:layout_width="fill_parent" 
      android:layout_height="150dip" > 

      <WebView 
       android:id="@+id/sampletxt" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" /> 
     </LinearLayout> 

Trong hoạt động của bạn chỉ bao gồm các dòng dưới đây

SampleTxt.getSettings().setLoadWithOverviewMode(true); 
       SampleTxt.getSettings().setJavaScriptEnabled(true); 
    SampleTxt.loadData("Your Text To show the Webview", 
         "text/html; charset=UTF-8", null); 

Nó sẽ hoạt động tốt. bất kỳ nghi ngờ cho tôi biết

2

Tôi khuyên bạn nên sử dụng ứng dụng WebView của riêng bạn. Trong Android, chúng ta có thể sử dụng WebViewClient hoặc WebChromeClient. Sử dụng điều này bạn sẽ nhận được kết quả tốt hơn mà bạn muốn. Chỉ cần thử nó và kiểm tra.

+0

Điều này có giải quyết được vấn đề của bất kỳ ai không? –

0

Đối với WebViews trong Android, bạn nên bắt đầu từ giả định rằng mọi thứ đều lỗi. Họ không nên, nhưng khi bạn phát hiện ra, nếu bạn làm cho nền màu phẳng, nó "giải quyết" vấn đề.

Bạn nên nhớ rằng bạn đang xử lý nhiều loại thiết bị di động khác nhau với việc xử lý và phân bổ bộ nhớ cực kỳ khác nhau khi bạn mã hóa cho điện thoại Android, vì vậy hãy luôn đảm bảo để thử nghiệm trên thiết bị thực.

Nếu bạn không có ít nhất 4 hoặc 5 thiết bị Android vật lý khác nhau mà bạn có thể kiểm tra, hãy xem các dịch vụ cho phép bạn sử dụng thiết bị của mình để kiểm tra từ xa. Không bao giờ tin rằng bởi vì bạn đã thử nghiệm một cái gì đó trong một trình giả lập, nó sẽ hoạt động giống nhau trên một thiết bị thực.

Các vấn đề liên quan