iewpager 嵌套 webview 滑动冲突

本文介绍了解决在Android应用中ViewPager嵌套WebView时出现的滑动冲突问题的方法。通过为WebView添加触摸监听器并调整其父View的触摸事件拦截逻辑,实现了WebView水平滑动时ViewPager不会误触发切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


viewpager  嵌套  webview ,当webview内容过宽,左右滑动与viewpager冲突 ,解决方法,给webview加上touch消息监听



private final class WebViewOnTouchListener implements OnTouchListener{

        int startX = 0;
        int startY = 0;
        
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            int xDistance = 0;
            int yDistance = 0;
            switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                startX = (int) event.getRawX();
                startY = (int) event.getRawY();
                break;
            case MotionEvent.ACTION_MOVE:
                xDistance = (int) (event.getRawX() - startX);
                yDistance = (int) (event.getRawY() - startY);
                
                Point outSize = new Point();    ///*****用这种方法可以得到屏幕的真实宽高
                ((Activity)context).getWindowManager().getDefaultDisplay().getRealSize(outSize);
                int screenWidth = outSize.x;
                int screenHeight = outSize.y;
                
                
                int xStardar = screenWidth / 3;
                int yStardar = screenHeight / 16;
                if(Math.abs(xDistance) < xStardar){
                    holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(true);   // viewpager不允许拦截touch消息
                    if(Math.abs(yDistance) > yStardar){
                        holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);   
                        holder.wv_table_content.setHorizontalScrollBarEnabled(false);
                    }
                }else{
                    holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
                    holder.wv_table_content.setHorizontalScrollBarEnabled(false);
                }
                break;
            case MotionEvent.ACTION_UP:
                holder.wv_table_content.getParent().getParent().getParent().requestDisallowInterceptTouchEvent(false);
                holder.wv_table_content.setHorizontalScrollBarEnabled(true);
                break;
            default:
                break;
            }
            return false;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值