开发中,遇到一个需求:轮播图要求随ListView一起滑动。
实现方式:将轮播图(ViewPager)以Header的形式添加到ListView
那么问题是,轮播图也即ViewPager的滑动略有卡顿,且ViewPager在水平距离上产生位移时,会触发ListView的下拉刷新。
解决办法:http://www.bkjia.com/Androidjc/959052.html?qqdrsign=072f8
这里记录下以上博主的方法
自定义ViewPager继承自support.v4.ViewPager,在ViewPager中对事件进行拦截分配。 在自定义ViewPager中添加代码
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
// TODO Auto-generated method stub
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.dispatchTouchEvent(ev);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.onInterceptTouchEvent(arg0);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
// TODO Auto-generated method stub
if (parent != null) {
parent.requestDisallowInterceptTouchEvent(true);
}
return super.onTouchEvent(arg0);
}
还是在自定义ViewPager中,顺便添加变量以及方法,用于得到ViewPager的Parent容器。
private ViewGroup parent;
public void setNestedParent(ViewGroup p) {
this.parent = p;
}
以上方法调用,在ViewPager控件初始化的时候,调用
mViewPager.setNestedParent((ViewGroup) mViewPager.getParent());