slidingmenu和ViewPager滑动冲突的解决方法
2014-09-29 17:05
113 查看
slidingmenu嵌套ViewPager
下面说的是slidingmenu左侧是菜单和中间部分是ViewPager时 滑动事件冲突的问题:
当滑动事件冲突时,我们首先要想到用事件的分发和拦截处理机制来解决,首先在slidingmenu控件的CustomViewAbove这个类(这里只举例左侧栏,右侧栏同理),找到onInterceptTouchEvent,在里面加入这段代码,这里的isCanMove默认是true,false时代表 不能滑动菜单,
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!AppContext.isCanMove) {
return false;
}
然后 重写ViewPager ,重写下里面的dispatchTouchEvent这个方法,由此可见,当我们按下ViewPager时,当当前页不是第一页时,isCanMove为false,此时slidingmenu控件的CustomViewAbove的onInterceptTouchEvent方法就会执行,将slidingmenu滑动事件拦截掉 而只执行ViewPager滑动事件;若非第一页则应该不屏蔽,这里必须判断ViewPager是否是第一页,如果是第一页在向左滑动应该是侧边栏,如果不是第一页,则应该屏蔽侧边栏而向左滑动ViewPager.(逻辑需求应该是这样才合理),如果是右侧菜单就要判断当前页是否是最后一页
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (getCurrentItem() == 0) {
AppContext.isCanMove = true;
}else{
AppContext.isCanMove = false;
}
}
return super.dispatchTouchEvent(ev);
}
综上所述:之所以在dispatchTouchEvent里写而不在onTouchEvent里写 是因为dispatchTouchEvent会在onInterceptTouchEvent之前执行,dispatchTouchEvent是事件的分发,然后才到拦截onInterceptTouchEvent,最后才到onTouchEvent,处理好这个事件 以后所有的控件 凡是有冲突都可以参考这个原理来解决了。
下面说的是slidingmenu左侧是菜单和中间部分是ViewPager时 滑动事件冲突的问题:
当滑动事件冲突时,我们首先要想到用事件的分发和拦截处理机制来解决,首先在slidingmenu控件的CustomViewAbove这个类(这里只举例左侧栏,右侧栏同理),找到onInterceptTouchEvent,在里面加入这段代码,这里的isCanMove默认是true,false时代表 不能滑动菜单,
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
if (!AppContext.isCanMove) {
return false;
}
然后 重写ViewPager ,重写下里面的dispatchTouchEvent这个方法,由此可见,当我们按下ViewPager时,当当前页不是第一页时,isCanMove为false,此时slidingmenu控件的CustomViewAbove的onInterceptTouchEvent方法就会执行,将slidingmenu滑动事件拦截掉 而只执行ViewPager滑动事件;若非第一页则应该不屏蔽,这里必须判断ViewPager是否是第一页,如果是第一页在向左滑动应该是侧边栏,如果不是第一页,则应该屏蔽侧边栏而向左滑动ViewPager.(逻辑需求应该是这样才合理),如果是右侧菜单就要判断当前页是否是最后一页
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
if (getCurrentItem() == 0) {
AppContext.isCanMove = true;
}else{
AppContext.isCanMove = false;
}
}
return super.dispatchTouchEvent(ev);
}
综上所述:之所以在dispatchTouchEvent里写而不在onTouchEvent里写 是因为dispatchTouchEvent会在onInterceptTouchEvent之前执行,dispatchTouchEvent是事件的分发,然后才到拦截onInterceptTouchEvent,最后才到onTouchEvent,处理好这个事件 以后所有的控件 凡是有冲突都可以参考这个原理来解决了。
相关文章推荐
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- ScrollView嵌入ViewPager 滑动冲突的解决方法
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- ViewPager和SlidingPaneLayout的滑动事件冲突解决方法
- 解决SlidingMenu与ViewPager的滑动冲突尝试
- ViewPager 常见滑动冲突解决方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- ViewPager和ResideMenu左右滑动冲突解决方法。ResideMenu viewPager
- Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
- 解决侧滑中ViewPager和SlidingMenu的滑动冲突
- 【Android】完美解决SwipeRefreshLayout中嵌套ViewPager时滑动冲突的方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- SlidingPanelLayout与ViewPager滑动冲突的解决方法
- Android App中ViewPager所带来的滑动冲突问题解决方法
- SwipeRefreshLayout和Viewpager滑动时冲突解决方法
- fragment加载webView与ViewPager所带来的滑动冲突问题解决方法
- ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
- 备忘-Android ViewPager 与Gallery滑动冲突解决方法
- Android中SwipeRefreshLayout和ViewPager左右滑动冲突的原因以及正确的解决方法