将按钮中的滑动事件传递给父对象(并保留onClick事件)

时间:2019-01-17 15:32:10

标签: android ontouchlistener ontouchevent ontouch android-viewflipper

我有一个3x3的TableLayout,每个单元格中都有一个Button。 TableLayout位于ViewFlipper上,因此在ViewFlipper中检测到滑动手势时,会向用户显示另一个视图(以编程方式添加所有内容,但ViewFlipper除外)。

问题是,如果在Button上滑动,则会触发其onClick事件,并且不会在ViewFlipper上执行滑动。我想将滑动事件传递给ViewFlipper(如果是滑动事件),并在单击时将onClick事件保留在Button上。而且,如果这是轻扫事件,请不要单击按钮。

尝试过:

btn.setOnTouchListener(new View.OnTouchListener() {
                    @Override
                    public boolean onTouch(View v, MotionEvent event) {
                        if(event.getAction()==MotionEvent.ACTION_MOVE){

                            vFlipper.onTouchEvent(event);
                            return false;
                        }
                        return false;
                    }

                });

但是在ViewFlipper中没有触发OnTouch。这是ViewFlipper上的OnTouchListener:

vFlipper.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.i("TAG", "Intercepted");
            int action = event.getActionMasked();
            switch (action){
                case MotionEvent.ACTION_DOWN:
                    startX = event.getX();
                    break;
                case MotionEvent.ACTION_UP:
                    float endX = event.getX();
                    float endY = event.getY();

                    //swipe right
                    if (startX < endX) {
                        vFlipper.showNext();
                    }

                    //swipe left
                    if (startX > endX) {
                        vFlipper.showPrevious();
                    }

                    break;
            }
            return true;
        }
    });

谢谢。

0 个答案:

没有答案