解決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氣泡升起和水滴下墜動畫實現(xiàn)示例
這篇文章主要為大家介紹了Android compose氣泡升起和水滴下墜動畫實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-01-01Android使用廣播(BroadCast)實現(xiàn)強制下線的方法
這篇文章主要介紹了Android使用廣播(BroadCast)實現(xiàn)強制下線的方法,實例分析了Android廣播BroadCast控制activity關閉的具體步驟與實現(xiàn)技巧,需要的朋友可以參考下2016-01-01Android中替換WebView加載網(wǎng)頁失敗時的頁面
這篇文章主要介紹了Android中替換WebView加載網(wǎng)頁失敗時的頁面,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-01-01Android中關于相對布局RelativeLayout的技巧匯總
RelativeLayout是相對布局控件,以控件之間相對位置或相對父容器位置進行排列。下面這篇文章主要給大家介紹了關于Android中相對布局RelativeLayout的一些技巧,需要的朋友可以參考借鑒,下面來一起看看吧。2017-02-02