有时我们需要将ViewPager嵌套在其他已经含有手势动作的ViewGroup里,如ScrollView,ListView时,会造成手势冲突,如表现为ViewPager向左划时,不小心向上移动了一点距离,ViewPager立刻回弹到原始位置。

主要问题出在ScrollView/ListView作为ViewPager的ParentView,会先接受到触摸信息,而且他们对上下滑动是会做出拦截动作,并接管触摸信息的向下传递,导致ViewPager滑动异常。 先看一种解决方式:

public class ScrollViewExtend extends ScrollView {
private float xDistance, yDistance, xLast, yLast;
public ScrollViewExtend(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
xDistance = yDistance = 0f;
xLast = ev.getX();
yLast = ev.getY();
break;
case MotionEvent.ACTION_MOVE:
final float curX = ev.getX();
final float curY = ev.getY();
xDistance += Math.abs(curX - xLast);
yDistance += Math.abs(curY - yLast);
xLast = curX;
yLast = curY;
if(xDistance > yDistance){
return false;
}
}
return super.onInterceptTouchEvent(ev);
}
}

这种方式的确可以解决这个问题,但是其实Google已经提供了一个函数来解决ParentView与ChildView手势冲突的问题。

public void requestDisallowInterceptTouchEvent(boolean disallowIntercept)

由ViewPager在OnTouch/onInterceptTouchEvent,dispatchTouchEvent中调用即可

最新文章

  1. ubuntu中查看已有的mysql用户并修改用户名和密码
  2. vector迭代器用法
  3. solr4.5安装配置 linux+tomcat6.0+mmseg4j-1.9.1分词
  4. JVM系列-分代收集垃圾回收
  5. ObjectStateManager 中已存在具有同一键的对象。ObjectStateManager 无法跟踪具有相同键的多个对象。
  6. css权值计算
  7. [New Portal]Windows Azure Virtual Machine (17) Virtual Machine成本分析
  8. leetcode 215. Kth Largest Element in an Array
  9. paper 47 :Latex中文显示(转)
  10. Swift - 单例模式的实现
  11. js 里面 写 C# 代码 遇到的问题
  12. 程序一 用记事本建立文件src.dat,其中存放若干字符。编写程序,从文件src.dat中读取数据,统计其中的大写字母、小写字母、数字、其它字符的个数,并将这些数据写入到文件test.dat中。
  13. 用keytool制作证书并在tomcat配置https服务(二 )
  14. leetcode8:字符串转整数 (atoi)
  15. web scraper——安装【一】
  16. 使用IntelliJ IDEA 配置Maven(转)
  17. Spring Boot中的AutoConfiguation核心注解
  18. 老毛桃pe装机工具备份系统
  19. [py]python中__new__作用
  20. 一张图看懂高通QC1.0-QC4.0快充进化之路!QC2.0跟QC3.0充电区别

热门文章

  1. PHP学习之中数组-遍历一维数组【2】
  2. IOS开发备忘
  3. Connect mysql on Linux from Windows
  4. 插件和过滤器装饰器开发中的感悟-python-django
  5. UBOOT的多支持性与可裁剪性
  6. MYSQL查看和修改存储引擎
  7. 模态运行EXE程序
  8. 【HDOJ】2609 How many
  9. AlgorithmsI Exercises: UnionFind
  10. 数据结构(树,点分治):POJ 1741 Tree