关闭

Android禁止ViewPager的左右滑动

标签: androidviewpager
886人阅读 评论(0) 收藏 举报
分类:
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);    
       
    } 

}


        使用这个自定义的viewpager完全可以实现禁止左右滑动效果,有效的防止与其他使用滑动事件地方发生冲突。完全可以复制直接使用不需要任何修改。

        主要是onInterceptTouchEvent和onTouchEvent事件中需要返回false,这样就禁止左右滑动了,不会影响到lisetview正常使用,上下滑动还是可以,这样就可以在listview中实现向左滑动删除效果了


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:114732次
    • 积分:1645
    • 等级:
    • 排名:千里之外
    • 原创:34篇
    • 转载:98篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论