Как поддерживать горизонтальную прокрутку внутри WebView, который размещен в ViewPager? - PullRequest
0 голосов
/ 21 февраля 2019

Мне нужно поддерживать горизонтальную прокрутку внутри веб-вида, который размещен в 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
}

Это работает нормально, но после использования веб-просмотра в течение некоторого времени, веб-просмотр становится слишком медленным.Есть ли другой способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...