WebView
アセットフォルダ内にローカルHTMLページを表示しているがあります。WebView
は、の大きなレイアウトの一部ですActivity
。EditText
ユーザーがウィジェットから内の入力要素にテキストをドラッグできるようにしようとしていWebView
ます。ドラッグリスナーが受信した画面座標を、が使用する画面座標に変換することを除いて、すべてが正常に機能しますdocument.elementFromPoint
。それらは一致しません。ユーザーの指よりもさらに下にある入力ボックスにテキストをドロップし続けます。どんな助けでもいただければ幸いです。警告:私のJavaScriptの知識はかなり哀れです。
基本的な流れ:
- WebViewのonDragイベントは、ACTION_DROPイベントをキャッチします。
- イベントのx、yの場所がJavascript関数に渡されます
- Javascript関数は、ポイントに基づいて要素を検索し、値を更新します
私の活動では:
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ラッパー:
public void _dropText(WebView wv, String text, float x, float y) {
wv.loadUrl("javascript:dropText('" + text + "', " + x + ", " + y + ")");
}
Javascript関数:
<script type="text/javascript">
function dropText(text, x, y) {
var elem = document.elementFromPoint(x, y);
if (elem.tagName == "INPUT") {
elem.value = text;
}
}
</script>