ListView嵌入ViewPager等横向滚动控件,会导致ViewPager左右拨动和ListView手势冲突。按经验(Gallery中的子视图处理Click事件)只要比对滑动的X坐标大于Y坐标,就交由ViewPager处理,应该是个简单的问题。实际search到的比较火方案的思路是用SimpleOnGestureListener的onScroll回调中判断X、Y坐标拨动绝对值是否拦截,不过这个到处转载的方案是有很多问题的(比如拨动不灵敏、上下拨有问题),那些转载的是脑子被炉踢了吗?
最后在stackoverflow看到一个解决方法,思路除了考虑X、Y坐标还考虑到了down、move事件的配合,比较靠谱结果试试效果不错。下面是核心代码,完整实现请参考附件(这种实现可以同样可以处理ListView嵌入ViewFlow、ViewFlipper、HorizontalScrollView等需要横向滚动的控件)
@Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN : mDX = mDY = 0f; mLX = ev.getX(); mLY = ev.getY(); break; case MotionEvent.ACTION_MOVE : final float X = ev.getX(); final float Y = ev.getY(); mDX += Math.abs(X - mLX); mDY += Math.abs(Y - mLY); mLX = X; mLY = Y; if (mIntercept && mLastAct == MotionEvent.ACTION_MOVE) { return false; } if (mDX > mDY) { mIntercept = true; mLastAct = MotionEvent.ACTION_MOVE; return false; } } mLastAct = ev.getAction(); mIntercept = false; return super.onInterceptTouchEvent(ev); }
相关推荐
Android listview viewpager 滑动 跳动 冲突解决 ListView中嵌套ViewPage有或者滑动手势冲突解决 blog 地址 : http://blog.csdn.net/aaawqqq/article/details/43824631
解决listView+viewPager滑动的冲突
很好用的ListView嵌入viewpager 不影响下拉刷新等操作
完美解决ListView和ViewPager的滑动冲突
自定义的ViewPager,可以实现页面之前的相互切换,可以...同时该ViewPager解决了传统ViewPager和ListView,ScrollView滑动冲突问题,当然ListView的滑动冲突实在ScrollView中解决的。实践表明,滑动切换效果较好。
scrollview 与 listview, viewpager 共存
listview与viewpager组合在一起,viewpager可以随着listview一起上下滑动,而viewpager自己可以左右滑动。常用于新闻界面
listview与viewpager组合我们会经常用到,为listview添加header,我们把viewpager设置为listview的header便可以实现
ListView中包含ViewPager时候,焦点冲突问题一直很头疼。本文特别对这以问题进行了阐述。
listview和viewpager及tabhost的touch事件冲突的解决,至少可以实现在重写父viewGroup的onintercpettouchevent的实现拦截和重写子viewGroup的onintercpettouchevent实现不允许拦截。
ViewPager与ListView的结合,实现Listview的横向滚动
ListView + ViewPager + Fragment + ListView 三层嵌套滑动控件的显示冲突解决方案,并且动态更新ViewPager的高度适应当前高度而不会出现大片空白
ScrollView+ListView+ViewPager滑动不冲突
自定义LinearLayout实现左右侧滑菜单,设计思路良好,完美兼容ListView、ViewPager、ScrollView等滑动控件。如果想详细了解请看我的博客。 资源分1分只是为了对得起自己的劳动成果,大家下载了再评论就可以把分赚...
ListView_ViewPager01
将viewpager嵌套在listview中,触摸事件互不影响
ListView同ViewPager类似,必须指定固定高度之后,才可以显示相应的高度,否则只显示一个Item的内容高度,然后在ListView区域上下滑动时,Scrollview并没有效果,而是实现的是ListView的上下滚动事件。
listView添加ViewPager实现同时滑动
listview嵌套viewpager(每行都是viewpager),并添加小圆点,及点击事件