Mam WebView
, który wyświetla lokalną stronę HTML w folderze zasobów. WebView
jest częścią większego układu w postaci Activity
. Próbuję umożliwić użytkownikom przeciąganie tekstu z widżetu EditText
do elementu wejściowego w ramach WebView
. Wszystko działa dobrze, z wyjątkiem konwersji współrzędnych ekranu odebranych przez odbiornik drag na współrzędne ekranu używane przez document.elementFromPoint
. Nie pasują do siebie. Będzie on nadal upuszczał tekst do pól wejściowych, które znajdują się niżej niż palec użytkownika. Każda pomoc będzie doceniona. Uwaga: moja znajomość javascriptu jest dość żałosna.Konwersja położenia dotyku widoku na położenie ekranu HTML w przeglądarce Web View
przepływ podstawowy: wydarzenie
- Webview za onDrag łapie zdarzenie ACTION_DROP.
- x imprezy, y lokalizacja jest przekazywane do funkcji JavaScript
- Funkcja JavaScript znajdzie element oparty na punkty i aktualizuje wartość
W moim działalność:
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 owijarki:
public void _dropText(WebView wv, String text, float x, float y) {
wv.loadUrl("javascript:dropText('" + text + "', " + x + ", " + y + ")");
}
Funkcja Javascript:
<script type="text/javascript">
function dropText(text, x, y) {
var elem = document.elementFromPoint(x, y);
if (elem.tagName == "INPUT") {
elem.value = text;
}
}
</script>
Witam @Jay, dzięki za to wspaniałe rozwiązanie. Spędzam kilka godzin waląc głową, próbując znaleźć najlepszy sposób na przetłumaczenie współrzędnych :) Btw, czy masz jakiś problem podczas przeciągania obiektu? Na przykład otrzymuję to "Przeciąganie jest w toku, ale nie ma uchwytu okna przeciągania" i z tego powodu moje zdarzenie przestawienia ruchu z wciśniętym dotykiem zatrzymuje się. Oto mój kod dla tego https://gist.github.com/anonymous/8161cae250a9f0c9002a – ShP
To brzmi trochę znajomo, ale nie mogę całkowicie przypomnieć. Minęły 3 lata i nie mam już dostępu do tego kodu. –
Sprawdziło się również dla mnie. Dzięki! – Shilpi