当listview滑过headview时动态禁止ViewPager滑动方法

来源:互联网 发布:python兼职 编辑:程序博客网 时间:2024/05/16 11:33

动态禁止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.

  是不是挺简单的,赶紧去试试吧!




1 0