Прокрутка Android отменяет события перемещения Webview
У меня есть активность Android с NestedScrollView, и внутри него у меня есть Webview с некоторыми скриптами html и jQuery.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/main_scroller"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
... some other components ...
<WebView
android:id="@+id/web_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
</android.support.design.widget.CoordinatorLayout>
</FrameLayout>
В этом сценарии jQuery я прослушиваю события «touchstart», «touchmove» и «touchend» для одного из элементов в html. Когда я перемещаю палец горизонтально по этому элементу, запускаются события. Однако, когда я перемещаю палец на 1 пиксель вверх или вниз, запускается собственная прокрутка Android, а также запускается мой собственный код (слушатель setOnTouchListener):
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d(TAG, "touched");
return false;
}
});
но мои прослушиватели jQuery в веб-просмотре не запускаются. Похоже, Android не передает события касания в веб-просмотр при прокрутке в NestedScrollView.
Если я меняю NestedScrollView на FrameLayout (или что-то еще, что не прокручивается), все работает отлично (когда я двигаю пальцами по вертикали, срабатывает событие jQuery touchmove).
Я пытался вернуть true в событии Android onTouch, он перестал прокручивать страницу, но веб-просмотр не получал событий касания. ScrollView ведет себя так же, как NestedScrollView.
У вас есть идеи, как распространять сенсорные события в веб-просмотре и при этом использовать ScrollView? Спасибо.