viewpager+fragment+viewpager+scrollview滑动冲突问题
2016-08-13 00:16
369 查看
我的布局比较复杂,viewpager里面是fragment,fragment里面有事viewpager,viewpager里面有事fragment,fragment里面是scrollview,scrollview里面是viewpager和listview不要问我为什么这么复杂,想想就蛋疼。。。
在这里面能滑动的有viewpager和scrollview,那么当我们滑动的时候到底哪个滑动,这是个问题,这里解决的是里层viewpager滑动时,外层viewpager和scrollview不滑动(其实scrollview影响不大,但是不禁止的话,viewpager左右滑动的时候稍微有一点上下动,就会出发scrollview的滑动,从而viewpager的左右滑动就失败啦。所以把scrollview也禁止啦),解决办法就是自定义一个viewpager
代码如下:
在这里面能滑动的有viewpager和scrollview,那么当我们滑动的时候到底哪个滑动,这是个问题,这里解决的是里层viewpager滑动时,外层viewpager和scrollview不滑动(其实scrollview影响不大,但是不禁止的话,viewpager左右滑动的时候稍微有一点上下动,就会出发scrollview的滑动,从而viewpager的左右滑动就失败啦。所以把scrollview也禁止啦),解决办法就是自定义一个viewpager
代码如下:
package com.mydrivernews.tools; import android.content.Context; import android.graphics.PointF; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.ViewParent; public class ImageViewPager extends ViewPager { public ImageViewPager(Context arg0, AttributeSet arg1) { super(arg0, arg1); } public ImageViewPager(Context context) { super(context); // TODO Auto-generated constructor stub } PointF downPoint = new PointF(); OnSingleTouchListener onSingleTouchListener; @Override public boolean onTouchEvent(MotionEvent evt) { /** *这里是我的布局结构,每次getParent()就得到他外边的布局,scrollview或viwepager和这个viewpager直接有几层布局,就用几个getParent() **/ ViewParent p=getParent().getParent().getParent(); //外层的viewpager取消拦截 ViewParent p2=getParent().getParent().getParent().getParent().getParent(); switch (evt.getAction()) { case MotionEvent.ACTION_DOWN: // 记录按下时候的坐标 downPoint.x = evt.getX(); downPoint.y = evt.getY(); if (this.getChildCount() > 1) { // 有内容,多于1个时 // 通知其父控件,现在进行的是本控件的操作,不允许拦截 p.requestDisallowInterceptTouchEvent(true); p2.requestDisallowInterceptTouchEvent(true); } break; case MotionEvent.ACTION_MOVE: if (this.getChildCount() > 1) { // 有内容,多于1个时 // 通知其父控件,现在进行的是本控件的操作,不允许拦截 p.requestDisallowInterceptTouchEvent(true); p2.requestDisallowInterceptTouchEvent(true); } break; case MotionEvent.ACTION_UP: // 在up时判断是否按下和松手的坐标为一个点 if (PointF.length(evt.getX() - downPoint.x, evt.getY() - downPoint.y) < (float) 5.0) { onSingleTouch(this); return true; } break; } return super.onTouchEvent(evt); } public void onSingleTouch(View v) { if (onSingleTouchListener != null) { onSingleTouchListener.onSingleTouch(v); } } public interface OnSingleTouchListener { public void onSingleTouch(View v); } public void setOnSingleTouchListener(OnSingleTouchListener onSingleTouchListener) { this.onSingleTouchListener = onSingleTouchListener; } }
相关文章推荐
- 关于viewpager中嵌套的fragment中的listview的横向滑动的滑动冲突的问题。
- 安卓解决viewPager+scrollView+listView滑动冲突的问题
- scrollview+tablayout+viewpager+三个fragment+listview滑动冲突、展示不全
- fragment加载webView与ViewPager所带来的滑动冲突问题解决方法
- viewpager+fragment和侧滑菜单冲突问题
- HorizontalScrollView 中嵌套 viewpager滑动冲突的解决
- 关于Viewpager中的Fragment 滑动时保存状态的问题
- Android 当可缩放的View用ViewPager显示时 左右滑动冲突问题
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- 安卓解决viewPager和scrollView和listView滑动冲突的问题
- 解决ScrollView嵌套ViewPager出现的滑动冲突问题
- viewpager、fragment滑动切换卡顿问题
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决ScrollView嵌套ViewPager出现的滑动冲突问题
- 完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题
- listview嵌套viewpager 滑动冲突问题
- 使用RadioGroup+ViewPager+Fragment实现带滑动的页卡效果TabHost时遇到的问题
- 完美解决ScrollView嵌套ViewPager滑动失效和无法正常滑动冲突问题
- 解决ListView+ViewPager滑动事件冲突的问题
- HorizontalScrollView中嵌套ViewPager时,ViewPager无法滑动的问题解决方法