我有一个viewpager在向左/向右滑动时在标签之间切换.在我的第二个标签中,我有一些自定义视图,其中有捏和拖动的监听器但是当我尝试捏或拖动时,viewpager开始刷页面.
我想到的一个解决方案是在触摸那些特定视图时禁用滑动,只在触摸那些视图外时滑动.这可能吗?
更新: @Asok提供了解决方案.但后来更新了在我的情况下无法工作的代码,所以我发布了一段对我有用的代码:
public class CustomViewPager extends ViewPager {
private boolean swipeable = true;
public CustomViewPager(Context context) {
super(context);
}
public CustomViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
// Call this method in your motion events when you want to disable or enable
// It should work as desired.
public void setSwipeable(boolean swipeable) {
this.swipeable = swipeable;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
return (this.swipeable) ? super.onInterceptTouchEvent(arg0) : false;
}
Run Code Online (Sandbox Code Playgroud)
让我假设我有一个可拖动的视图,我需要在拖动开始时禁用滑动,并在拖动完成时重新启用,所以在我所谓的视图的TouchEvent中:
@Override
public boolean onTouchEvent(MotionEvent event) { …Run Code Online (Sandbox Code Playgroud)