15
15
import android .widget .AdapterView ;
16
16
import android .widget .BaseAdapter ;
17
17
import android .widget .FrameLayout ;
18
- import android .widget .HeaderViewListAdapter ;
19
18
import android .widget .ListAdapter ;
20
19
21
20
import java .util .ArrayList ;
@@ -36,6 +35,8 @@ public class SwipeLayout extends FrameLayout {
36
35
private Map <View , ArrayList <OnRevealListener >> mRevealListeners = new HashMap <View , ArrayList <OnRevealListener >>();
37
36
private Map <View , Boolean > mShowEntirely = new HashMap <View , Boolean >();
38
37
38
+ private boolean mSwipeEnabled = true ;
39
+
39
40
public static enum DragEdge {
40
41
Left ,
41
42
Right ,
@@ -638,6 +639,15 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
638
639
639
640
@ Override
640
641
public boolean onInterceptTouchEvent (MotionEvent ev ) {
642
+
643
+ if (!isEnabled () || !isEnabledInAdapterView ()){
644
+ return true ;
645
+ }
646
+
647
+ if (!isSwipeEnabled ()){
648
+ return false ;
649
+ }
650
+
641
651
for (SwipeDenier denier : mSwipeDeniers ) {
642
652
if (denier != null && denier .shouldDenySwipe (ev )) {
643
653
return false ;
@@ -716,10 +726,12 @@ private boolean childNeedHandleTouchEvent(View v, MotionEvent event){
716
726
private float sX = -1 , sY = -1 ;
717
727
@ Override
718
728
public boolean onTouchEvent (MotionEvent event ) {
719
-
720
- if (!isEnabledInAdapterView ())
729
+ if (!isEnabledInAdapterView () || !isEnabled ())
721
730
return true ;
722
731
732
+ if (!isSwipeEnabled ())
733
+ return super .onTouchEvent (event );
734
+
723
735
int action = event .getActionMasked ();
724
736
ViewParent parent = getParent ();
725
737
@@ -735,6 +747,7 @@ public boolean onTouchEvent(MotionEvent event) {
735
747
case MotionEvent .ACTION_DOWN :
736
748
mDragHelper .processTouchEvent (event );
737
749
parent .requestDisallowInterceptTouchEvent (true );
750
+
738
751
sX = event .getRawX ();
739
752
sY = event .getRawY ();
740
753
@@ -839,17 +852,23 @@ private boolean isEnabledInAdapterView(){
839
852
if (adapter != null ){
840
853
int p = adapterView .getPositionForView (SwipeLayout .this );
841
854
if (adapter instanceof BaseAdapter ){
842
- enable & = ((BaseAdapter ) adapter ).isEnabled (p );
855
+ enable = ((BaseAdapter ) adapter ).isEnabled (p );
843
856
}else if (adapter instanceof ListAdapter ){
844
- enable &= ((ListAdapter ) adapter ).isEnabled (p );
845
- }else if (adapter instanceof HeaderViewListAdapter ){
846
- enable &= ((HeaderViewListAdapter ) adapter ).isEnabled (p );
857
+ enable = ((ListAdapter ) adapter ).isEnabled (p );
847
858
}
848
859
}
849
860
}
850
861
return enable ;
851
862
}
852
863
864
+ public void setSwipeEnabled (boolean enabled ){
865
+ mSwipeEnabled = enabled ;
866
+ }
867
+
868
+ public boolean isSwipeEnabled (){
869
+ return mSwipeEnabled ;
870
+ }
871
+
853
872
private boolean insideAdapterView (){
854
873
return getAdapterView () != null ;
855
874
}
0 commit comments