要防止listview 的左右滑删除和viewpage的翻页冲突:
方法一:
viewpage实现翻页的源码是在onInterceptTouchEvent实现的,因此要重写viewpage的此函数
public boolean onInterceptTouchEvent(MotionEvent event) {
//if(getChildAt(getCurrentItem()) instanceof ListView)
int downX = (int) event.getX();
int downY = (int) event.getY();
ViewGroup group = (ViewGroup)getChildAt(getCurrentItem());
for(int i = 0; i < group.getChildCount();i++)
{
View view = group.getChildAt(i);
if (view instanceof ListView)
{
Rect outRect = new Rect(0, 0, 0, 0);
view.getLocalVisibleRect(outRect);
//Rect outRect = new Rect(0, 0, 0, 0);
//view.getHitRect(outRect);
if (outRect.contains(downX, downY))
{
return false;
}
}
}
return super.onInterceptTouchEvent(event);
//return false;//和super一样,继续向子view传递
//return true;//进入本层的onTouchEvent
}
方法二:
不重写viewpage
在listview里dispatchTouchEvent调用函数getParent().requestDisallowInterceptTouchEvent(true);
getParent().requestDisallowInterceptTouchEvent(true);方法。一旦底层View收到touch的action后调用这个方法那么父层View就不会再调用onInterceptTouchEvent了,也无法截获以后的action。
http://blog.csdn.net/chaihuasong/article/details/17499799
源代码:http://download.csdn.net/detail/gadfly_only/8765089