Мне нужно поддерживать горизонтальную прокрутку внутри веб-вида, который размещен в ViewPager.Когда я достигну конца горизонтального веб-просмотра, я смогу провести пальцем к предыдущему / следующему элементу в ViewPager.
Я попробовал следующий код.
<android.support.v4.widget.NestedScrollView
android:id="@+id/web_notify_scroll_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">
<HorizontalSwipeWebView
android:id="@+id/web_item_content"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</android.support.v4.widget.NestedScrollView>
Ярасширение класса WebView и переопределение onTouchEvent
и onOverScrolled
событий.
override fun onOverScrolled(scrollX: Int, scrollY: Int, clampedX: Boolean, clampedY: Boolean) {
//Enables ViewPager when scroll reaches end.
if (clampedX) {
Log.d(TAG, "Web view over scrolled in X direction, so enabling horizontalScrollingParent paging back")
horizontalScrollingParent?.requestDisallowInterceptTouchEvent(false)
isScrolling = false
}
if (clampedY) {
Log.d(TAG, "Web view over scrolled in Y direction, so enabling Vertical Parent back")
verticalScrollingParent?.requestDisallowInterceptTouchEvent(false)
}
super.onOverScrolled(scrollX, scrollY, clampedX, clampedY)
}
override fun onTouchEvent(event: MotionEvent): Boolean {
//disables ViewPager when user presses down
val consumed = super.onTouchEvent(event)
//gestureDetector.onTouchEvent(event)
when (event.action) {
MotionEvent.ACTION_DOWN -> {
horizontalScrollingParent?.requestDisallowInterceptTouchEvent(true)
verticalScrollingParent?.requestDisallowInterceptTouchEvent(true)
}
MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL,
MotionEvent.ACTION_OUTSIDE -> {
Logger.d(TAG, "Action event: ${event.action} -> so enabling parents intercept")
horizontalScrollingParent?.requestDisallowInterceptTouchEvent(false)
verticalScrollingParent?.requestDisallowInterceptTouchEvent(false)
isScrolling = false
}
}
return isScrolling || consumed
}
Это работает нормально, но после использования веб-просмотра в течение некоторого времени, веб-просмотр становится слишком медленным.Есть ли другой способ сделать это?