ViewPager和SlidingPaneLayout的滑动事件冲突解决方法
2018-01-02 08:55
651 查看
问题描述:
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的滑动事件冲突解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章推荐
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
- ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
- Android中解决ListView嵌套Viewpager时,滑动事件冲突的方法
- ViewPager禁止滑动以及它与内层滑动控件水平方向上事件冲突的解决方法
- 解决ScrollView嵌套viewPager中嵌套listView滑动事件冲突问题(水平方向)
- ViewPager和ResideMenu左右滑动冲突解决方法。ResideMenu viewPager
- fragment加载webView与ViewPager所带来的滑动冲突问题解决方法
- 解决ScrollView嵌套viewpager滑动事件冲突问题
- Android ViewPager和SlidingPaneLayout的滑动事件冲突处理方法
- SwipeRefreshLayout与ViewPager滑动事件冲突解决
- Android中SwipeRefreshLayout和ViewPager左右滑动冲突的原因以及正确的解决方法
- ScrollView嵌入ViewPager 滑动冲突的解决方法
- Android ViewPager嵌套ViewPager滑动冲突的解决方法
- 用requestDisallowInterceptTouchEvent()方法防止viewpager和子view滑动事件冲突
- Android App中ViewPager所带来的滑动冲突问题解决方法
- 完美解决Android里面scrollview嵌套及listview嵌套viewpager的滑动冲突问题的简单方法
- SwipeRefreshLayout和Viewpager滑动时冲突解决方法
- View的滑动方式及滑动冲突解决方法(事件分发)
- 备忘-Android ViewPager 与Gallery滑动冲突解决方法