ViewPager滑动的使能设置

今天做一个项目时,需要对ViewPager的滑动进行控制,而原生的没有这个方法,所有需要重写方法实现该功能

第一:自定义MyViewPager来继承ViewPager; 
第二:重写OnTouchEvent方法; 
第三:重写scrollTo方法; 


MyViewPager viewPager = new MyViewPager(context);
viewPager.setAdapter(new PagerAdapter() {
}

viewPager.setIsCanScroll(false);
viewPager.setIsCanScroll(true);

public class MyViewPager extends ViewPager { 
//定义一个布尔变量来控制是否允许滑动,该变量的set方法就直接决定了该viewpager是否可以滑动 
private boolean isCanScroll = true; 
private Context context;

public MyViewPager(Context context) {
    super(context);
    this.context = context;
}

public MyViewPager(Context context, AttributeSet attrs) {
    super(context, attrs);
    this.context = context;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
    if (isCanScroll) {
        //允许滑动则应该调用父类的方法
        return super.onTouchEvent(ev);
    } else {
        //禁止滑动则不做任何操作,直接返回true即可
        Toast.makeText(context,"what are you 弄啥嘞?",Toast.LENGTH_SHORT).show();
        return true;
    }
}

@Override
public void scrollTo(int x, int y) {
    /**
     *必须这样重写,否则会出现画面"一半,一半"的现象,根据Debug来分析可能是虽然onTouchEvent方法返回了true
     *但是依然在返回true前,viewpager开始调用了scrollTo方法,导致画面"拖出来一点"
     */
    if (isCanScroll) {
        //只有允许滑动的时候才调用滑动的方法
        super.scrollTo(x, y);
    }
}

//设置是否允许滑动,true是可以滑动,false是禁止滑动
public void setIsCanScroll(boolean isCanScroll) {
    this.isCanScroll = isCanScroll;
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值