处理ViewPager嵌套ViewPager的滑动事件冲突

  开发时遇到一个问题:使用ViewPager+Fragment实现滑动tab切换,在其中某一个Fragment中嵌套一个ViewPager轮播卡片。测试发现轮播卡片不能进行左右滑动了。

  看了不少博文,都是通过覆盖onInterceptTouchEvent等方法拦截事件处理,例如:

    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
            mPager.requestDisallowInterceptTouchEvent(true);
            return super.dispatchTouchEvent(ev);
    }  

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
            mPager.requestDisallowInterceptTouchEvent(true);
            return super.onInterceptTouchEvent(ev);
    }  

    @Override
    public boolean onTouchEvent(MotionEvent event) {
            mPager.requestDisallowInterceptTouchEvent(true);
            return super.onTouchEvent(event);
    }  

  在stackoverflow上找到这个方法,简洁完美地解决了我的问题。外层ViewPager复写canScroll方法,这种处理同样适用于ScrollView等其他滑动控件。

    @Override
    protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
        if (v != this && v instanceof ViewPager) {
            return true;
        }
        return super.canScroll(v, checkV, dx, x, y);
    }

  链接:http://stackoverflow.com/questions/7098868/viewpager-inside-viewpager

时间: 2024-10-10 23:38:09

处理ViewPager嵌套ViewPager的滑动事件冲突的相关文章

从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法

本篇文章假设读者没有任何的触摸事件基础知识,所以我们会从最基本的触摸事件分发处说起. ScrollView为什么会出现嵌套EditText出现滑动事件冲突呢?相信你会有这种疑问,我们来看这么一种情况: 有一个固定高度的EditText,假设它只能显示3行文本,但是,我们在其中输入的文本多余三行时,那么这时就需要可以在EditText内部进行小幅滚动了.那么将这个EditText放入了ScrollView当中, 并且ScrollView内容过多以致ScrollView也可以滑动,这时候就会出现Ed

Android ViewPager和SlidingPaneLayout的滑动事件冲突处理方法(转载)

最近在做一个项目需要用到ViewPager加载广告图,布局中需要侧滑,用了android V4包里的SlidingPaneLayout控件(该控件在旧的v4包里面没有,需要更新v4包),项目中使用的时候,发现在滑动中ViewPager和SlidingPaneLayout滑动冲突了,当手指从左向右滑动时,ViewPager的滑动事件被SlidingPaneLayout屏蔽了,只能执行SlidingPaneLayout的事件,而从右往左滑时,则正常. 国内找了一些资料,发现不是特别好,最后还是靠VP

ViewPager嵌套ViewPager后子ViewPager滑动不正常问题

ViewPager嵌套ViewPager后,滑动事件没法在子ViewPager里面响应. 解决办法是自定义子ViewPager. 以下代码是转载的,经本人测试,可以用!!! 转载地址:http://blog.csdn.net/leewenjin/article/details/21011841 package com.lwj.app.customview; import android.content.Context; import android.graphics.PointF; import

重写ListView解决ListView内部ViewPaper滑动事件冲突问题

很简单 重写ListView 其他类似问题解决ScrollView嵌套ViewPager出现的滑动冲突问题 http://blog.csdn.net/zhangyiacm/article/details/37903071 package com.zy.myview; import android.content.Context; import android.util.AttributeSet; import android.view.GestureDetector; import androi

Viewpager嵌套Viewpager遇到的一些问题

Viewpager嵌套Viewpager,如果内层的滑动卡顿,那么需要将其实只要用外层Viewpager调用setOnTouchListener方法就将左右滑动禁用了, 但是如果内层的Viewpager可以正常滑动,但是在滑动到最后一页的时候底层 当将内层ViewPager滑到底时,上面调用的方法貌似约束不了他,他会先拉出一点点,再划几次就慢慢就划过一半了,但是划不到另一个界面这个时候内层的viewpager需要自定义一个viewpager来处理事件分发

Android viewpager 嵌套 viewpager滑动 点击事件冲突解决方案

为了解决这个问题.可以自定义viewpager,然后在里面监听首饰,自定义点击事件 package com.hpuvoice.view; import android.content.Context; import android.graphics.PointF; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.GestureDetector; impo

SwipeRefreshLayout与ViewPager滑动事件冲突解决

问题描述: 开发中发现,SwipeRefreshLayout的下拉刷新,与ViewPager开发的banner的左右滑动事件有一点冲突,导致banner的左右滑动不够顺畅.很容易在banner的左右滑动的过程中,触发SwipeRefreshLayout的下拉刷新,从而导致banner左右滑动的体验很差. 解决方案: 可以在ViewPager的滑动时候设置SwipeRefreshLayout暂时不可用,ViewPager的滑动效果就变得很流畅了. 代码示例: mViewPager.setOnTou

ViewPager嵌套viewpager有什么冲突问题

Viewpager q嵌套 viewPager ,左右滑动事件的冲突,外围的ViewPager要重写几个方法就可以了: onTouchEvent,OnInterceptTouchEvent,在这两个方法中加入自定义样式,在使用的时候根据需要选择 使用系统自己的处理方法或者用户自定义的方式 public class MYViewPager extends ViewPager { private boolean swipeable; public MYViewPager(Context contex

Android之viewPager嵌套viewPager无法滑动子viewPager

现在最头疼的事就是需求不明确,这不,有遇到你个奇葩需求,父viewPager总共有三个选项卡,第一个选项卡里嵌入一个子viewPager,这时候问题就来了,子viewPager无法滑动,我猜的事父viewPager把子viewPager拦截了,于是尝试了下面的第一种方法 1.重写父viewPager的onInterceptTouchEvent方法 /** * @author 子墨 * * 2015-2-26上午8:59:50 */ public class MyViewPager extends

Android动画及滑动事件冲突解决(转载)

原文链接:http://blog.csdn.net/singwhatiwanna/article/details/38168103 Android开发中动画和事件处理是程序员迈向高手的必经之路,也是重点和难点. 此篇转载文章思路清晰,结构合理,用图文混合的方式完美的讲解了动画和事件冲突的解决办法,值得珍藏,转载到我的博客中,可以时常研究一下.