onClick on ViewPager not triggered

后端 未结 8 1183
有刺的猬
有刺的猬 2020-11-28 04:49

I set a click listener on a ViewPager, but the onClick event is never called. I guess the touch event detection of the ViewPager is interfering, bu

8条回答
  •  情歌与酒
    2020-11-28 05:44

    I know it's kinda old topic but I think this is much easier solution.

    ViewPager viewPager = new ViewPager(this);
    viewPager.setAdapter(yourPagerAdapter);
    
    // somewhere where you setup your viewPager add this
    viewPager.setOnTouchListener(
        new View.OnTouchListener() {
            private boolean moved;
    
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
                    moved = false;
                }
                if (motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
                    moved = true;
                }
                if (motionEvent.getAction() == MotionEvent.ACTION_UP) {
                    if (!moved) {
                        view.performClick();
                    }
                }
    
                return false;
            }
        }
    );
    
    // then you can simply use the standard onClickListener ...
    viewPager.setOnClickListener(
        new View.OnClickListener() {
    
            @Override
            public void onClick(View view) {
                Log.i(LOG, "Dayum!");
            }
        }
    );
    

提交回复
热议问题