Android OnTouchListener内部片段停止Viewpager滑动事件
我在一个片段中有一个Viewpager,当我试图在这个Viewpager上实现OnTouchListener时,触摸手势工作完全正常,但在实现OnTouchListener后,我无法在我的Viewpager项目之间切换。我不确定我做错了什么,甚至我也没有得到任何线索 以下是我的OnTouchListener代码:Android OnTouchListener内部片段停止Viewpager滑动事件,android,android-viewpager,ontouchlistener,Android,Android Viewpager,Ontouchlistener,我在一个片段中有一个Viewpager,当我试图在这个Viewpager上实现OnTouchListener时,触摸手势工作完全正常,但在实现OnTouchListener后,我无法在我的Viewpager项目之间切换。我不确定我做错了什么,甚至我也没有得到任何线索 以下是我的OnTouchListener代码: lsArticlesViewPager.setOnTouchListener(new View.OnTouchListener() { @Override
lsArticlesViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN: {
downXValue = motionEvent.getX();
downYValue = motionEvent.getY();
break;
}
case MotionEvent.ACTION_UP: {
float currentX = motionEvent.getX();
float currentY = motionEvent.getY();
if (downYValue < currentY) {
swipeUpTv.startAnimation(animBounce);
}
if (downYValue > currentY)
getActivity().finish();
}
break;
}
}
return true;
}
});
lsarticlesviewpage.setOnTouchListener(新视图.OnTouchListener()){
@凌驾
公共布尔onTouch(视图、运动事件、运动事件){
开关(motionEvent.getAction()){
case MotionEvent.ACTION\u DOWN:{
downXValue=motionEvent.getX();
downYValue=motionEvent.getY();
打破
}
case MotionEvent.ACTION\u UP:{
float currentX=motionEvent.getX();
float currentY=motionEvent.getY();
if(向下值<当前值){
swipeUpTv.startAnimation(动画反弹);
}
如果(向下值>当前值)
getActivity().finish();
}
打破
}
}
返回true;
}
});
因为您正在使用该事件,所以ViewPager
不会更改。从onTouch
方法返回false
。
检查onTouch
方法的官方版本。
返回
如果侦听器已使用事件,则为True,否则为false
如果我从onTouch返回“false”,则menthod Viewpager工作正常,但onTouchListener停止工作。如果我从onTouch返回“true”,那么onTouchListener工作正常,但Viewpager停止工作。onTouchListener在返回
false
后停止工作,因为Viewpager
正在使用滑动片段的触摸事件,你是对的。现在它的工作就像一个魅力。感谢您指出问题:)如果您想在每次触摸ViewPager
时检测它的触摸事件,您必须关注ViewPager
的子类并覆盖dispatchTouchEvent
方法。然后,每次触摸ViewPager
方法dispatchTouchEvent
都会被调用。确保您没有使用它而返回false。很高兴听到它有帮助。:)