ViewPager2与WebView滑动冲突问题

一、场景

    在App中,如果使用ViewPager2+fragment的方式,实现页面的左右滑动,而其中的页面使用了WebView加载网页,且是可以上下滑动的网页,当我们在网页滑动的时候,会直接切换到下一个viewpager的页面,而不是优先响应webview的滑动。

使用的是webview库加载网页

    implementation 'io.github.justson:agentweb-core:v5.1.1-androidx'

二、解决方案

实现思路是拦截webview的事件,当他在屏幕两边的200像素范围内为边缘触摸时才可以左右滑动viewpager2,为了提升用户体验,像素值可根据自己需求设计。

if (point > 0 && point < 200 || point > dm.widthPixels - 200 && point < dm.widthPixels) 
private DisplayMetrics dm;
private WindowManager manager;

private void initWebView(String realUrl) {
dm = new DisplayMetrics();
manager = (WindowManager) myActivity.getSystemService(Context.WINDOW_SERVICE);

manager.getDefaultDisplay().getMetrics(dm);
            mAgentWeb.getWebCreator().getWebView().setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {

                    switch (event.getAction()) {
                        case MotionEvent.ACTION_DOWN:
                            int point = (int) event.getX();
                            if (point > 0 && point < 200 || point > dm.widthPixels - 200 && point < dm.widthPixels) {
                                mAgentWeb.getWebCreator().getWebView().requestDisallowInterceptTouchEvent(false);
                            } else {
                                mAgentWeb.getWebCreator().getWebView().requestDisallowInterceptTouchEvent(true);
                            }
                            break;
                    }
                    return false;

                }
            });

 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值