2012-06-21 14 views
8

Tôi là một ứng dụng Android có hộp văn bản để tìm kiếm, một số nút, xem web (1 hiển thị 2 ẩn) và tiếp thị AdMob. ứng dụng chỉ tìm kiếm trên một số trang web đặc biệt và nó hoạt động tốt trên trình mô phỏng, thiết bị Samsung Galaxy. nhưng tôi đã gặp vấn đề với HTC One X (không biết về các mẫu HTC khác).HTC One X - Webview trở nên trắng/trống sau khi chạm

Vấn đề là, khi bạn nhấp vào nút tìm kiếm, chế độ xem web sẽ tải trang. sau đó "đôi khi" khi bạn cố chạm vào ngay cả khi cuộn, chế độ xem web chỉ trở lại vùng trắng hoàn toàn với các thanh cuộn. điều này xảy ra đặc biệt sau khi làm mới quảng cáo. thậm chí đôi khi nền và vùng văn bản của quảng cáo hoàn toàn trở thành màu trắng - cũng không thể đọc được. trên quảng cáo chỉ mũi tên màu xanh lam và hình ảnh cuộc gọi điện thoại màu xanh luôn hiển thị!

có ai có bất kỳ vấn đề nào như thế này và giải pháp nào không? cảm ơn trước.

đây là xml bố trí của tôi:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#ffffff" 
    android:orientation="vertical" > 

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" > 

     <LinearLayout 
      android:id="@+id/layoutDashboard" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_vertical" 
      android:background="@drawable/border_shape" 
      android:orientation="vertical" 
      android:paddingTop="1sp" > 

      <EditText 
       android:id="@+id/editxtKeyword" 
       android:layout_width="fill_parent" 
       android:layout_height="43dp" 
       android:layout_marginLeft="1dp" 
       android:layout_marginRight="1dp" 
       android:layout_marginTop="2dp" 
       android:ems="10" 
       android:hint="@string/editxtKeyword_hint" 
       android:singleLine="true" > 
      </EditText> 

      <HorizontalScrollView 
       android:id="@+id/horizontalScrollView1" 
       android:layout_width="fill_parent" 
       android:layout_height="0dip" 
       android:layout_gravity="center_vertical" 
       android:layout_weight="0.30" 
       android:paddingBottom="2dp" 
       android:paddingLeft="1dp" 
       android:scrollbars="none" > 

       <LinearLayout 
        android:id="@+id/layoutButtons" 
        android:layout_width="wrap_content" 
        android:layout_height="fill_parent" 
        android:layout_gravity="center_vertical" 
        android:layout_marginTop="0dp" 
        android:layout_marginBottom="1dp" 
        android:layout_marginLeft="1dp" 
        android:layout_marginRight="1dp" 
        android:orientation="horizontal" > 
< 
        <Button 
         android:id="@+id/btnAk" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_vertical" 
         android:layout_margin="1dp" 
         android:background="@drawable/custom_button_shape" 
         android:text="asd" /> 

        <Button 
         android:id="@+id/btnCm" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center_vertical" 
         android:layout_margin="1dp" 
         android:background="@drawable/custom_button_shape" 
         android:text="csm" /> 

       </LinearLayout> 
      </HorizontalScrollView> 
     </LinearLayout> 

     <RelativeLayout 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 

      <WebView 
       android:id="@+id/webV" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:layout_above="@+id/linlaylay1" 
       android:visibility="visible" /> 

      <WebView 
       android:id="@+id/webVAnalytics" 
       android:layout_width="1dp" 
       android:layout_height="0dp" 
       android:visibility="invisible" /> 

      <WebView 
       android:id="@+id/WebVSahibinden" 
       android:layout_width="1dp" 
       android:layout_height="0dp" 
       android:visibility="invisible" /> 

      <LinearLayout 
       android:id="@+id/linlaylay1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_margin="0dp" 
       android:orientation="vertical" 
       android:padding="0dp" > 

       <com.google.ads.AdView 
        android:id="@+id/adViewSmall" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_gravity="center_horizontal|top" 
        ads:adSize="BANNER" 
        ads:adUnitId="a123123" 
        ads:loadAdOnCreate="true" 
        ads:testDevices="TEST_EMULATOR" /> 
      </LinearLayout> 
     </RelativeLayout> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layoutProgress" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="top|center_horizontal" 
     android:layout_marginBottom="50dp" 
     android:layout_marginTop="5dp" 
     android:background="@drawable/progress_shape" 
     android:padding="2dp" 
     android:visibility="invisible" > 

     <TextView 
      android:id="@+id/lblLoading" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_margin="2dp" 
      android:text="@string/msg_loading" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="#000000" /> 

     <ImageButton 
      android:contentDescription="@string/dialog_cancel" 
      android:id="@+id/btnStop" 
      android:layout_width="30dp" 
      android:layout_height="30dp" 
      android:src="@drawable/stop" /> 
    </LinearLayout> 

</FrameLayout> 
+0

không nhìn lại, hãy nhìn vào phía trước! có một số lần xuất hiện cho lỗi. Nhưng HTC phát hành các thiết bị mới, và vấn đề không xảy ra trong các thiết bị này. – Yaya

Trả lời

2

Có nhiều vấn đề khi hiển thị quan điểm phần cứng tăng tốc trên đầu trang của mỗi khác. Tôi sẽ làm lại bố cục của bạn để không chồng chéo lượt xem web hoặc chế độ xem cuộn hoặc tắt tăng tốc phần cứng.

+0

Lance, cảm ơn phản hồi của bạn. thực sự không có trang web nào chồng lên nhau, bởi vì chỉ 1 trong số chúng được hiển thị, những người khác thì không. trong khi tải i hiển thị nhãn "tải" trên vùng EditText và đó là tất cả chồng chéo. ý của bạn về việc vô hiệu hóa tăng tốc phần cứng là gì? –

+0

Bạn có thể tắt tăng tốc phần cứng cho các chế độ xem riêng lẻ trong mã hoặc hoàn toàn trong tệp kê khai của bạn, đây là một tính năng mới của Android, nơi chế độ xem được chuyển thành họa tiết GPU và được vẽ theo cách đó. Nhân tiện, tôi thường thấy những thứ như xem trước máy ảnh can thiệp vào mọi thứ ngay cả khi chúng không nhìn thấy được. Nếu bạn thực sự sắp xếp các khung nhìn giống như bạn đang làm, bạn sẽ có một thay đổi tốt hơn một chút nếu nó sử dụng thay vì vô hình. Đó là lỗi cố định cho tôi trước đây. –

1

Tôi đã thấy vấn đề này với các lần xem web đơn trên điện thoại HTC. One of the comments in this bug thread thực hiện một số đề xuất để giúp tối ưu hóa hiệu suất của WebView. Lỗi này là về các biến đổi 3D nhưng tôi đã nhận thấy các kỹ thuật của nhận xét hữu ích cho WebView nói chung.

This presentation at Google I/O 2012 cũng cung cấp một số thông tin tốt về chủ đề của WebViews, nói chung.

Cả hai đều cho rằng nội dung động được đặt trên một "lớp". Điều này có nghĩa gán quy tắc CSS này để các yếu tố:

-webkit-transform: translate3d(0, 0, 0); 

Bằng cách áp dụng quy tắc này, Android "cho trình duyệt để pre-composite lớp vào kết cấu riêng của mình để nó có thể được hoạt hình sau for (gần) miễn phí" này hành vi không phải là miễn phí - nó có thể tiêu thụ nhiều bộ nhớ hơn vì vậy tôi sẽ áp dụng nó một cách khôn ngoan. Bản trình bày được liên kết ở trên thực hiện tốt công việc giải thích lý do.

Trong trường hợp của tôi, tôi đã có thể tránh được "màn hình trắng" bằng cách áp dụng quy tắc này cho một DIV kết thúc tốt đẹp toàn bộ trang. Trang đôi khi sẽ hiển thị màu trắng trong một giây và sau đó hiển thị nội dung. Tôi đã không nhìn thấy trang "trắng" tồn tại mãi mãi như tôi đã làm trước khi áp dụng kỹ thuật này. Tôi không thấy tiêu thụ bộ nhớ ngoài tầm kiểm soát. YMMV.

Tôi cũng khuyên bạn nên làm những gì bạn có thể để đơn giản hóa bố cục của mình. Nói dễ hơn làm, nhưng một số gợi ý tốt có thể được tìm thấy in the docs.

+1

Tôi đã đọc nhiều hacks và đã thử nhiều cách để giải quyết mọi vấn đề về webview của HTC. Cuối cùng, đây là thứ duy nhất có hiệu quả. Cảm ơn! –

+0

Daniel, vui mừng khi biết rằng phương pháp này làm việc cho người khác. Đây là một trong những vấn đề kỳ lạ nhất mà tôi gặp phải. –

+0

không hoạt động đối với tôi :( –

2

A known bug

Bạn có thể vô hiệu hóa khả năng tăng tốc phần cứng trên WebView của bạn, nhưng hãy chắc chắn để làm như vậy trong một cách mà không phá vỡ các thiết bị cũ:

if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.HONEYCOMB){ 
    //mWebView is some WebView 
    mWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 
} 

Hãy cẩn thận

  • Video sẽ không phát trong trình duyệt
  • Cuộn sẽ không được gần như trơn tru

Điều này được khắc phục trong Jelly Bean theo lỗi nhưng tôi chưa thể xác minh cá nhân đó.

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