动态禁止ViewPager滑动方法
最近在做的一个需求:ViewPager中存在多个fragment,fragment中含有listview,listview的头部信息是headview。要求当listview滑动到一定位置,headview消失后viewpager不能进行滑动。
这就要求我们要动态的设置ViewPager的滑动状态,具体实现如下:
//这是自定义的ViewPager ,重写了scrollTo的方法,这是因为VIewPager移动全部都调用了scrollTo方法
public class MyViewPager extends ViewPager {
private boolean scrollble = true;
public MyViewPager(Context context) {
super(context);
}
public MyViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public void scrollTo(int x, int y) {
if (scrollble) {
super.scrollTo(x, y);
}
}
public boolean isScrollble() {
return scrollble;
}
public void setScrollble(boolean scrollble) {
this.scrollble = scrollble;
}
}
// 监听listview的滑动
listview.setOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView arg0, int arg1) {
//此处的状态值有三种
//SCROLL_STATE_IDLE:停止滚动
//SCROLL_STATE_TOUCH_SCROLL:正在滑动...
//SCROLL_STATE_FLING:开始滚动...
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
if (firstVisibleItem >= 1) {
mPager.setScrollble(false);
} else {
mPager.setScrollble(true);
}
}
});
此处firstVisibleItem为显示的第一个item,visibleItemCount为可见的item数量,totalItemCount为全部的item.
是不是挺简单的,赶紧去试试吧!