解决ViewPager和SlidingPaneLayout的滑动事件冲突问题
2018-01-04 15:47
666 查看
问题描述:
ViewPager和SlidingPaneLayout的滑动事件冲突。
问题分析:
在手指左右滑动时,SlidingPaneLayout会屏蔽ViewPager的滑动事件。
解决办法:
自定义SlidingPaneLayout类
import android.content.Context; import android.support.v4.view.MotionEventCompat; import android.support.v4.widget.SlidingPaneLayout; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.ViewConfiguration; public class PagerEnabledSlidingPaneLayout extends SlidingPaneLayout { private float mInitialMotionX; private float mInitialMotionY; private float mEdgeSlop; public PagerEnabledSlidingPaneLayout(Context context) { this(context, null); } public PagerEnabledSlidingPaneLayout(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PagerEnabledSlidingPaneLayout(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); ViewConfiguration config = ViewConfiguration.get(context); mEdgeSlop = config.getScaledEdgeSlop(); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { switch (MotionEventCompat.getActionMasked(ev)) { case MotionEvent.ACTION_DOWN: { mInitialMotionX = ev.getX(); mInitialMotionY = ev.getY(); break; } case MotionEvent.ACTION_MOVE: { final float x = ev.getX(); final float y = ev.getY(); if (mInitialMotionX > mEdgeSlop && !isOpen() && canScroll(this, false, Math.round(x - mInitialMotionX), Math.round(x), Math.round(y))) { MotionEvent cancelEvent = MotionEvent.obtain(ev); cancelEvent.setAction(MotionEvent.ACTION_CANCEL); return super.onInterceptTouchEvent(cancelEvent); } } } return super.onInterceptTouchEvent(ev); } }
以上这篇解决ViewPager和SlidingPaneLayout的滑动事件冲突问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章推荐
- 解决ScrollView嵌套viewPager中嵌套listView滑动事件冲突问题(水平方向)
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决ScrollView和VerticalViewPager滑动事件冲突问题
- 解决ScrollView嵌套viewpager滑动事件冲突问题
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决ListView+ViewPager滑动事件冲突的问题
- 解决Gallery与viewpager滑动冲突问题
- android 布局 使用 viewPager 时,如何解决 和 子页面 长按滑动 冲突问题
- 重写ListView解决ListView内部ViewPaper滑动事件冲突问题
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
- ViewPager禁止滑动,设置页片间距,设置当前显示的页面,缓存个数,以及解决嵌套ViewPager左右滑动冲突问题
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
- 解决ScrollView嵌套ViewPager出现的滑动冲突问题
- 解决SlideDetailsLayout与ViewPager垂直滚动事件冲突问题
- 解决双ViewPager嵌套的事件分发和去掉viewpager滑动问题
- Android解决ListView头ViewPager事件冲突问题
- 解决android中viewpager和内嵌html滑动事件冲突
- ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
- React Native通过修改ScrollableTabView和ViewPager来解决左右滑动冲突的问题
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法