import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class My_ViewPager extends ViewPager {
public My_ViewPager(Context context) {
super(context);
}
public My_ViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
//拦截 TouchEvent 返回false 拦截
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return false;
}
//处理 TouchEvent
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
// return super.onTouchEvent(arg0);
return false;
}
//因为这个执行的顺序是 父布局先得到 action_down的事件
/**
* onInterceptTouchEvent(MotionEvent ev)方法,这个方法只有ViewGroup类有
* 如LinearLayout,RelativeLayout等 可以包含子View的容器的
*
* 用来分发 TouchEvent
* 此方法 返回true 就交给本 View的 onTouchEvent处理
* 此方法 返回false 就交给本View的 onInterceptTouchEvent 处理
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//让父类不拦截触摸事件就可以了。
this.getParent().requestDisallowInterceptTouchEvent(false);
return super.dispatchTouchEvent(ev);
}
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.MotionEvent;
public class My_ViewPager extends ViewPager {
public My_ViewPager(Context context) {
super(context);
}
public My_ViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
//拦截 TouchEvent 返回false 拦截
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return false;
}
//处理 TouchEvent
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
// return super.onTouchEvent(arg0);
return false;
}
//因为这个执行的顺序是 父布局先得到 action_down的事件
/**
* onInterceptTouchEvent(MotionEvent ev)方法,这个方法只有ViewGroup类有
* 如LinearLayout,RelativeLayout等 可以包含子View的容器的
*
* 用来分发 TouchEvent
* 此方法 返回true 就交给本 View的 onTouchEvent处理
* 此方法 返回false 就交给本View的 onInterceptTouchEvent 处理
*/
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
//让父类不拦截触摸事件就可以了。
this.getParent().requestDisallowInterceptTouchEvent(false);
return super.dispatchTouchEvent(ev);
}
}
使用这个自定义的viewpager完全可以实现禁止左右滑动效果,有效的防止与其他使用滑动事件地方发生冲突。完全可以复制直接使用不需要任何修改。
主要是onInterceptTouchEvent和onTouchEvent事件中需要返回false,这样就禁止左右滑动了,不会影响到lisetview正常使用,上下滑动还是可以,这样就可以在listview中实现向左滑动删除效果了。