@@ -28,6 +28,7 @@ public class SwipeLayout extends FrameLayout {
28
28
private ShowMode mShowMode ;
29
29
30
30
private List <SwipeListener > mSwipeListeners = new ArrayList <SwipeListener >();
31
+ private List <SwipeDenier > mSwipeDeniers = new ArrayList <SwipeDenier >();
31
32
private Map <View , ArrayList <OnRevealListener >> mRevealListeners = new HashMap <View , ArrayList <OnRevealListener >>();
32
33
private Map <View , Boolean > mShowEntirely = new HashMap <View , Boolean >();
33
34
@@ -82,6 +83,31 @@ public void removeAllSwipeListener(){
82
83
mSwipeListeners .clear ();
83
84
}
84
85
86
+ public static interface SwipeDenier {
87
+ /*
88
+ * Called in onInterceptTouchEvent
89
+ * Determines if this swipe event should be denied
90
+ * Implement this interface if you are using views with swipe gestures
91
+ * As a child of SwipeLayout
92
+ *
93
+ * @return true deny
94
+ * false allow
95
+ */
96
+ public boolean shouldDenySwipe (MotionEvent ev );
97
+ }
98
+
99
+ public void addSwipeDenier (SwipeDenier denier ) {
100
+ mSwipeDeniers .add (denier );
101
+ }
102
+
103
+ public void removeSwipeDenier (SwipeDenier denier ) {
104
+ mSwipeDeniers .remove (denier );
105
+ }
106
+
107
+ public void removeAllSwipeDeniers () {
108
+ mSwipeDeniers .clear ();
109
+ }
110
+
85
111
public interface OnRevealListener {
86
112
public void onReveal (View child , DragEdge edge , float fraction , int distance );
87
113
}
@@ -615,6 +641,12 @@ public boolean dispatchTouchEvent(MotionEvent ev) {
615
641
616
642
@ Override
617
643
public boolean onInterceptTouchEvent (MotionEvent ev ) {
644
+ for (SwipeDenier denier : mSwipeDeniers ) {
645
+ if (denier != null && denier .shouldDenySwipe (ev )) {
646
+ return false ;
647
+ }
648
+ }
649
+
618
650
return mDragHelper .shouldInterceptTouchEvent (ev );
619
651
}
620
652
0 commit comments