2017-06-24 2 views
0

ich versuche Ansicht Pager swappable programical, aber auf meinem Code unten mehrere Swipe auf Sicht Pager, aktiviert/deaktiviert Funktion nicht arbeiten dieseAndroid deaktivieren swappable Ansicht Pager

public static void changeSwappableViewPagerStatus(ViewPagerCustomDuration viewPager, boolean status) { 
    if (status) { 
     viewPager.setOnTouchListener(null); 
    } else { 
     viewPager.setOnTouchListener(new View.OnTouchListener() { 

      public boolean onTouch(View arg0, MotionEvent arg1) { 
       return true; 
      } 
     }); 
    } 
} 
+0

Hast du versucht, [diese] (https: //StackOverflow.com/a/38705505/5733111) – Sanoop

+0

@Sanoop, das für die Klasse extended from viewpager verwendet wird, wie mit Widget –

+0

Können Sie Ihren Aktivitätscode dort posten, wo Sie diese Funktion implementieren? – Sanoop

Antwort

0

zu deaktivieren und aktivieren zu tun, sollten Sie machen eine Unterklasse von viewpager wie folgt und tun es in onTouchEvent:

import android.content.Context; 
import android.support.v4.view.ViewPager; 
import android.util.AttributeSet; 
import android.view.MotionEvent; 
import android.view.animation.DecelerateInterpolator; 
import android.widget.Scroller; 
import java.lang.reflect.Field; 

public class NonSwipeableViewPager extends ViewPager { 

    public NonSwipeableViewPager(Context context) { 
     super(context); 
     setMyScroller(); 
    } 

public NonSwipeableViewPager(Context context, AttributeSet attrs) { 
    super(context, attrs); 
    setMyScroller(); 
} 

@Override 
public boolean onInterceptTouchEvent(MotionEvent event) { 
    // Never allow swiping to switch between pages 
    return false; 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // Never allow swiping to switch between pages 
    return false; 
} 

//down one is added for smooth scrolling 

private void setMyScroller() { 
    try { 
     Class<?> viewpager = ViewPager.class; 
     Field scroller = viewpager.getDeclaredField("mScroller"); 
     scroller.setAccessible(true); 
     scroller.set(this, new MyScroller(getContext())); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

public class MyScroller extends Scroller { 
    public MyScroller(Context context) { 
     super(context, new DecelerateInterpolator()); 
    } 

    @Override 
    public void startScroll(int startX, int startY, int dx, int dy, int duration) { 
     super.startScroll(startX, startY, dx, dy, 350 /*1 secs*/); 
    } 
} 
} 

komplette Ressource: https://stackoverflow.com/a/9650884/6790308

+0

mit Widget wie mit Ihrem Code ist nicht nützlich für meine Anwendung, ich versuche, Java-Code zu verwenden, um zu deaktivieren oder zu aktivieren –

Verwandte Themen