带有WebView的ViewPager允许滑动和禁止滚动WebView

San*_*t A 10 android webview android-webview android-viewpager

我正在使用ViewPager并将内容WebView呈现HTML为电子书.在ViewPager的某些页面上,我允许TouchEvent由WebView处理,在某些页面上,我让ViewPager TouchEvent通过覆盖该onInterceptTouchEvent方法来自行处理ViewPager(某些页面有TextViews和Buttons没有WebView第一页和最后一页).这是相同的代码 -

@Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (getCurrentItem() == 0 || getCurrentItem() == getAdapter().getCount() - 1)
            return false;
        else {
            if (ev.getAction() == MotionEvent.ACTION_DOWN) {
                return false;
            }
            return true;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我通过设置禁止再次滚动OnTouchListener的WebView使用下面的代码-

contentView.setOnTouchListener((v, event) -> {
            if (MotionEventCompat.getActionMasked(event) == MotionEvent.ACTION_MOVE) {
                ((BigBeeViewPager) v.getParent().getParent()).onInterceptTouchEvent(event);
            }
            return true;
        });
Run Code Online (Sandbox Code Playgroud)

我面临的问题是 - 当我试图从页面中间滑动ViewPager时它不起作用.我必须从页面末尾开始滑动.但是它适用于没有WebView 如何允许它从页面中的任何位置开始滑动的页面.

此行为类似于Gmail Android应用程序,其中ViewPager包含WebView,并且可以从任何位置使用Swiping.我无法弄清楚他们是如何做到的.

注意 -当我拦截所有内容TouchEvent时,WebView它也会禁用长按和文本选择,这是不可取的.

在此先感谢您的帮助.

Mar*_*rky 5

在这里你走人 - 一个很好的解决方案的老问题.

看一下这里在ViewPager中水平滚动webview