iewpager 嵌套 webview 滑动冲突

来源:互联网 发布:复制电梯卡软件 编辑:程序博客网 时间:2024/06/10 00:08


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;
        }
    }

0 0