2012-04-30 25 views
17

Tôi có một lớp WebView mở rộng tùy chỉnh hiển thị nội dung HTML. Khi người dùng nhấp vào một liên kết trong tài liệu HTML, tôi tính toán một giá trị X để di chuyển đến, và sau đó sử dụng scrollTo (x, y) để hiển thị vị trí đó qua một Runnable (xem dưới đây)Android WebView không thể hoàn toàn hiển thị nội dung cho đến khi tương tác của người dùng

post(new Runnable() { 

      @Override 
      public void run() { 

       scrollTo(x, 0); 
       MyWebView.this.invalidate(); 
       MyWebView.this.buildDrawingCache(); 
       MyWebView.this.refreshDrawableState(); 
       MyWebView.this.postInvalidate(); 
      } 
     }); 

Sau khi di chuyển, có khả năng là webview sẽ không hiển thị toàn bộ tài liệu. Các khối hình chữ nhật của không gian màu trắng được hiển thị ở vị trí văn bản, với vị trí dường như ngẫu nhiên mỗi lần. Đây là ảnh chụp màn hình: http://i.imgur.com/g192Y.jpg

Khi tôi chạm vào chế độ xem web để cuộn, nó sẽ ngay lập tức hiển thị các phần còn thiếu.

Cho đến nay hành vi này bị hạn chế với Samsung Galaxy 10.1" máy tính bảng.

Có ai biết một workaround/làm thế nào để buộc webkit phải render lại trang?

+1

Có may mắn ở đây không? Có một vấn đề tương tự. Điều này làm việc tốt trong Jelly Bean, nhưng là một vấn đề liên tục trong ICS. –

+1

Tôi có vấn đề chính xác này ngay cả trên Jelly bean. Nó làm việc tốt trên Kitkat. –

Trả lời

6

Vâng tôi đang có chính xác cùng vấn đề ở đây với máy tính bảng đó, sự khác biệt duy nhất là tôi đang sử dụng iscroll để thực hiện tất cả thao tác cuộn. Giải pháp tôi đang sử dụng cho sự cố này là "cuộn" qua JavaScript một DIV ẩn và đã khắc phục sự cố. Nếu bạn sử dụng iscroll họ có một phương pháp để "di chuyển" đến một vị trí cố định, có lẽ điều đó cũng có thể giúp bạn, nếu không không khó để phát hiện các sự kiện touchmove hoặc mousemove sự kiện. Điểm ở đây là bạn chỉ cần giả mạo một cuộn bất cứ nơi nào trên html ngay cả khi không hiển thị.

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