Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class ScrollDisableableViewPager extends ViewPager {
- public static final int DIRECTION_NONE = 0;
- public static final int DIRECTION_LEFT = 1;
- public static final int DIRECTION_RIGHT = 2;
- public static final int DIRECTION_BOTH = 3;
- public interface DirectionsProvider {
- public int getScrollDirections(int position);
- }
- public ScrollDisableableViewPager(Context context) {
- super(context);
- }
- public ScrollDisableableViewPager(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
- @Override
- protected boolean canScroll(View v, boolean checkV, int dx, int x, int y) {
- final PagerAdapter adapter = getAdapter();
- final int page = getCurrentItem();
- if (adapter == null || page >= adapter.getCount() || !(adapter instanceof DirectionsProvider)) {
- return super.canScroll(v, checkV, dx, x, y);
- }
- final DirectionsProvider provider = (DirectionsProvider) adapter;
- final int directions = provider.getScrollDirections(page);
- switch (directions) {
- case DIRECTION_NONE : {
- return true;
- }
- case DIRECTION_LEFT : {
- return dx < 0 || super.canScroll(v, checkV, dx, x, y);
- }
- case DIRECTION_RIGHT : {
- return dx > 0 || super.canScroll(v, checkV, dx, x, y);
- }
- case DIRECTION_BOTH : {
- return super.canScroll(v, checkV, dx, x, y);
- }
- default : {
- throw new IllegalArgumentException("Unknown directions value : " + directions);
- }
- }
- }
- }
- public class CustomAdapter extends FragmentStatePagerAdapter implements ScrollDisableableViewPager.DirectionProvider {
- public CategoriesPagerAdapter(FragmentManager manager) {
- super(manager);
- }
- @Override
- public Fragment getItem(int position) {
- return MyFragment.newInstance(position);
- }
- @Override
- public int getCount() {
- return 7;
- }
- @Override
- public int getScrollDirections(int position) {
- if (position == 0) {
- return ScrollDisableableViewPager.DIRECTION_NONE;
- }
- if (position == 1) {
- return ScrollDisableableViewPager.DIRECTION_RIGHT;
- }
- return ScrollDisableableViewPager.DIRECTION_BOTH;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement