解决ViewPager和SlidingPaneLayout的滑动事件冲突问题
更新时间:2018年01月04日 15:47:36 作者:Homilier
下面小编就为大家分享一篇解决ViewPager和SlidingPaneLayout的滑动事件冲突问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
问题描述:
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 中CheckBox多项选择当前的position信息提交的示例代码
这篇文章主要介绍了Android 中CheckBox多项选择当前的position信息提交的示例代码,非常不错,具有参考借鉴价值,需要的朋友可以参考下2017-07-07Android compose气泡升起和水滴下坠动画实现示例
这篇文章主要为大家介绍了Android compose气泡升起和水滴下坠动画实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-01-01Android使用广播(BroadCast)实现强制下线的方法
这篇文章主要介绍了Android使用广播(BroadCast)实现强制下线的方法,实例分析了Android广播BroadCast控制activity关闭的具体步骤与实现技巧,需要的朋友可以参考下2016-01-01Android中关于相对布局RelativeLayout的技巧汇总
RelativeLayout是相对布局控件,以控件之间相对位置或相对父容器位置进行排列。下面这篇文章主要给大家介绍了关于Android中相对布局RelativeLayout的一些技巧,需要的朋友可以参考借鉴,下面来一起看看吧。2017-02-02
最新评论