Tôi có một WebView
đang hiển thị trang HTML cục bộ trong thư mục nội dung. WebView
là một phần của bố cục lớn hơn trong một Activity
. Tôi đang cố gắng cho phép người dùng kéo văn bản từ tiện ích EditText
vào Phần tử nhập trong phạm vi WebView
. Mọi thứ hoạt động tốt ngoại trừ việc chuyển đổi tọa độ màn hình nhận được bởi người nghe kéo đến tọa độ màn hình được sử dụng bởi document.elementFromPoint
. Họ không phù hợp. Nó sẽ tiếp tục thả văn bản vào các ô đầu vào tiếp tục xuống sau đó là ngón tay người dùng. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảnh báo: kiến thức javascript của tôi khá là thảm hại.Chuyển vị trí của Chế độ xem của Chế độ xem sang vị trí màn hình HTML của WebView
dòng chảy cơ bản: sự kiện onDrag
- WebView của bắt sự kiện ACTION_DROP.
- x của sự kiện, y vị trí sẽ được chuyển cho một hàm Javascript
- Chức năng Javascript thấy yếu tố dựa trên điểm và cập nhật các giá trị
Trong Hoạt động của tôi:
private class OnWebViewDragListener implements OnDragListener {
public boolean onDrag(View v, DragEvent event) {
switch (event.getAction()) {
case DragEvent.ACTION_DROP:
String dropText = event.getClipData().getItemAt(0).getText().toString();
mJavaScript._dropText(mWebView, dropText, event.getX(), event.getY());
return true;
default:
break;
}
return false;
}
}
Javascript wrapper:
public void _dropText(WebView wv, String text, float x, float y) {
wv.loadUrl("javascript:dropText('" + text + "', " + x + ", " + y + ")");
}
Chức năng Javascript:
<script type="text/javascript">
function dropText(text, x, y) {
var elem = document.elementFromPoint(x, y);
if (elem.tagName == "INPUT") {
elem.value = text;
}
}
</script>
Xin chào @Jay, cảm ơn vì giải pháp tuyệt vời này. Tôi dành vài giờ đập đầu của tôi cố gắng tìm ra cách tốt nhất để dịch tọa độ :) Btw, bạn đã có một số vấn đề trong khi bạn kéo đối tượng của bạn? Ví dụ, tôi tiếp tục nhận được điều này "Kéo đang trong tiến trình nhưng không có xử lý cửa sổ kéo" và do đó sự kiện di chuyển trên chạm của tôi ngừng kích hoạt. Đây là mã của tôi cho https://gist.github.com/anonymous/8161cae250a9f0c9002a – ShP
Nghe có vẻ quen thuộc nhưng không thể nhớ lại hoàn toàn. Đã 3 năm rồi và tôi không còn quyền truy cập vào mã này nữa. –
Làm việc tốt cho tôi. Cảm ơn! – Shilpi