ViewPager 内嵌 ViewPager 思路来源 http://my.oschina.net/ososchina/blog/383194
重写onTouchEvent方法 细微的代码做了修改
在手势动作 追加个判断
if(this.getChildCount() > 1){//判断重写的viewpager 是否有子项
getParent().requestDisallowInterceptTouchEvent(true);
}
同时在 MotionEvent.ACTION_UP 或者 MotionEvent.ACTION_CANCEL的时候 起始点误差为8 都属于点击的范围 经验之谈
ViewPager 与SwipeRefreshLayout冲突的问题
思想来源 http://www.tuicool.com/articles/u2iQZjj
但是测试后 有个bug 常见的场景 viewpager 轮播图 在这种需求下 viewpager 的高度不小 有的时候可能会占整个页面的一半高度
SwipeRefreshLayout是整个界面的刷新 但是viewpager 只要被触碰 那么SwipeRefreshLayout刷新无效
这样SwipeRefreshLayout的刷新操作范围 就很小了
解决方案 pager.setOnPageChangeListener
@Override
public void onPageScrollStateChanged(int state) {
//state 有三个值: 0(END),1(PRESS) , 2(UP) //此处触发的顺序 可以自行打印
if(state == 1){
SwipeRefreshLayout.setEnabled(false);
}else if(state == 0){
SwipeRefreshLayout.setEnabled(true);
}
}