事件衝突解決方法

1 ScrollView 內嵌ScrollView 衝突解決    自定義ScrollView 里加如下代碼

//--------內部攔截法-----------------
    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        int x = (int) event.getX();
        int y = (int) event.getY();

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN: {
                getParent().requestDisallowInterceptTouchEvent(true);
                break;
            }
            case MotionEvent.ACTION_MOVE: {
                int deltaX = x - mLastX;
                int deltaY = y - mLastY;
                if (Math.abs(deltaX) > Math.abs(deltaY)) {
                    getParent().requestDisallowInterceptTouchEvent(false);
                }
                break;
            }
            case MotionEvent.ACTION_UP: {
                break;

            }
            default:
                break;
        }

        mLastX = x;
        mLastY = y;
        return super.dispatchTouchEvent(event);
    }
 //外部攔截法
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

        int x = (int) ev.getX();
        int y = (int) ev.getY();

        switch (ev.getAction()){
            case MotionEvent.ACTION_DOWN:
                mLastX = (int) ev.getX();
                mLastY = (int) ev.getY();
                break;

            case MotionEvent.ACTION_MOVE:
                int moveX = x - mLastX;
                int moveY = y - mLastY;
                if(Math.abs(moveX) < Math.abs(moveY)){
                    return false;
                }
                break;

                default:break;
        }
        return super.onInterceptTouchEvent(ev);

    }

2  SwipeRefreshLayout 內嵌套  Viewpager     (內部解決法)

public boolean dispatchTouchEvent(MotionEvent e){

    case ActionDown:

ViewCompact.setNestedScrollingEnable(this,true);

             getParent().requestDisallowInterceptTouchEvent(true);

     case Move:

           if(上下滑動){

                 getParent().requestDisallowInterceptTouchEvent(true);

                 }

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章