Để đơn giản: Tôi muốn đánh dấu vị trí hiện tại (có thể là một số vị trí) trong tệp html được hiển thị trong một WebView để sau này khôi phục nó. Bất kỳ gợi ý nhỏ sẽ giúp đỡ. :)Nhận vị trí tài liệu trong một WebView?
Trả lời
Nếu theo "vị trí hiện tại" bạn có nghĩa là một điểm nào đó trong một trang nhất định, tôi không tin rằng điều đó là có thể ... ít nhất không hoàn toàn từ Java. Toàn bộ WebKit API tiếp xúc với Java thiếu nhiều thứ liên quan đến nội dung của các trang.
Nếu bạn có quyền kiểm soát nội dung trang, và có một cách để biết các vị trí thông qua trong trang Javascript, bạn có thể:
BướC# 1: Sử dụng WebView#addJavascriptInterface()
để thêm một đối tượng với một số loại recordPosition()
phương pháp , lưu thông tin ở bất cứ đâu thích hợp
BướC# 2: Tạo hàm Javascript gọi recordPosition()
trên đối tượng được tiêm.
và sau đó một trong hai:
BướC# 3a: Trigger rằng Javascript hàm từ Javascript chính nó (ví dụ, dựa trên một nhấp chuột), hoặc
BướC# 3b: Gọi loadUrl("javascript:...");
trên WebView
của bạn, nơi ...
là được thay thế bằng mã Javascript để kích hoạt chức năng Javascript từ bướC# 2.
Khôi phục các vị trí này sẽ phải hoạt động theo cùng một cách: có Javascript thực hiện khôi phục thực tế, có thể được kích hoạt bởi mã Java.
Lưu ý rằng tôi không biết nếu bạn muốn (có được/thiết lập vị trí hiện tại) có sẵn từ Javascript, vì tôi không có nhiều bộ mã hóa trong trình duyệt.
Cách tiếp cận tôi đã là như sau:
Trong phương pháp onSaveInstanceState()
, tính toán thế nào đến nay xuống trang người dùng đã cuộn.
int contentHeight = webView.getContentHeight();
int scrollY = webView.getScrollY();
float scrollPercent = ((float) scrollY/((float) contentHeight));
Stash rằng trong gói. Khi khôi phục trang trong phương pháp onCreate()
, chờ trang để hoàn thành tải (trong WebClient.onPageFinished()
), di chuyển đến vị trí ghi lại:
int contentHeight = webView.getContentHeight();
int y = (int) ((float) contentHeight * scrollPercent);
webView.scrollTo(0, y);
- Sử dụng một
float
và tính toán một tỷ lệ làm việc trong trường hợp lật giữa cảnh quan và chân dung. - Có thể hoạt động cũng đủ nhưng không phải hoàn toàn khi được trộn lẫn với hình ảnh tự động.
- Quy mô cũng có thể được tính đến. Tôi có xu hướng ngăn chặn tỷ lệ trong tùy chọn theo phương pháp
onPause()
và sau đówebView.setInitialScale(scale)
trước khi bạn bắt đầu tải trang. - Tôi nhận thấy rằng việc đặt chế độ xem web thành ẩn khi
scrollPercent > 0
trông đẹp hơn.
- 1. C# PDF Vị trí sắc nét trong tài liệu
- 2. cách nhận vị trí (# dòng) của EObject trong tài liệu gốc?
- 3. Nhận vị trí trong ListView
- 4. trình duyệt chéo so sánh vị trí tài liệu
- 5. Android - Chỉ nhận vị trí một lần
- 6. Là nền-vị trí-x (nền-vị trí-y) một tài sản CSS W3C tiêu chuẩn?
- 7. Nhận vị trí chuột trong div?
- 8. Nhận vị trí của JPopupMenu
- 9. jquery xác nhận vị trí
- 10. Nhận vị trí hàng trong onCreateContextMenu
- 11. Nhận index xoắn ốc từ vị trí
- 12. Sử dụng vị trí: tuyệt đối trong khi vẫn giữ nó trong luồng tài liệu
- 13. Kindle: Nhận vị trí đọc xa nhất
- 14. Chuyển vị trí của Chế độ xem của Chế độ xem sang vị trí màn hình HTML của WebView
- 15. angularJS - nhận vị trí x & y từ mouseclick trong div
- 16. Nhận tài liệu IFrame, từ JavaScript trong tài liệu chính
- 17. Tải tài nguyên Android vào một WebView
- 18. Cách nhận vị trí của một lần nhấp?
- 19. Nhận vị trí hình ảnh - camera PhoneGap
- 20. Cần một vị trí cố định div bên trong một div vị trí tuyệt đối
- 21. Nhận dùng hiện vị trí trên MKMapView
- 22. WebView không tải Tài sản chính xác
- 23. Cách nhận vị trí GPS Android
- 24. Nhận vị trí của người dùng Android
- 25. Vị trí con trỏ ở đầu/cuối của tài liệu Word
- 26. Vị trí thư mục dữ liệu mysql
- 27. cách nhận vị trí hiện tại trong FragmentPagerAdapter?
- 28. Vị trí dữ liệu chính với ngày
- 29. Chèn nút XML tại vị trí cụ thể của tài liệu hiện có
- 30. Nhận vị trí GPS qua dịch vụ trong Android
Câu trả lời tuyệt vời! Cảm ơn rất nhiều. Câu hỏi liên quan: http://stackoverflow.com/questions/1091048/alternatives-to-window-scrollmaxy – yanchenko