2017-09-09 54 views
0

私はAndroidアプリケーションのいずれかでViewPagerを使用しています。私はまだAndroidを学んでいるので、それについてはあまり知られていません。スワイプを左から右に、右から左をポジションベースで無効にします。私は解決のためにstackoverflowで検索したが、適切な解決策を得ていない。私はここに私のコードを添付しています。誰かがこのパズルを解くのを助けることができるかどうか教えてください。私は無効にスワイプViewPagerスワイプを右から左に、左から右に無効にする

private void updateUI() { 

    lblLikeCount.setText(currentQuote.getQuLike()); 
    lblShareCount.setText(currentQuote.getQuShare()); 
    lblTime.setText(currentQuote.getQuTime()); 
    textPageCount.setText((mItemIndx + 1) + "/" + totalSize); 
    // butNext.setVisibility((mItemIndx < totalSize - 1) ? View.VISIBLE : View.INVISIBLE); 
    butPrev.setVisibility((mItemIndx > 0) ? View.VISIBLE : View.INVISIBLE); 
    if(mItemIndx==totalSize-1||(mItemIndx+1)%ITEMS_PER_PAGE==0) { 
     butNext.setVisibility(View.INVISIBLE); 
     //I want Disable Right to Left Swipe Here 
    } else { 
     butNext.setVisibility(View.VISIBLE); 
    } 
    if (mItemIndx-1<0 ||(mItemIndx)%ITEMS_PER_PAGE==0) { 
     butPrev.setVisibility(View.INVISIBLE); 
     //I want Disable Left to Right Here 
    } else { 
     butPrev.setVisibility(View.VISIBLE); 
    } 

} 

おかげでたくさんの友達が欲しいそこから

マイViewPager

adapter = new MyAdapter(getSupportFragmentManager()); 
    viewPager.setOffscreenPageLimit(0); 
    viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
     @Override 
     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 
     } 

     @Override 
     public void onPageSelected(int position) { 
      constant.new_ad_count = constant.new_ad_count + 1; 
      mItemIndx = position; 
      try { 
       int index = position % ITEMS_PER_PAGE; 
       currentQuote = quotes.get(index); 
      } catch 
        (Exception e) { 
      } 
      mPageIndx = ((position + 1)/ITEMS_PER_PAGE) + (((position + 1) % ITEMS_PER_PAGE) > 0 ? 1 : 0); 
      updateUI(); 
     } 

     @Override 
     public void onPageScrollStateChanged(int state) { 
     } 
    }); 
    viewPager.setAdapter(adapter); 
    viewPager.setCurrentItem(mItemIndx); 
    updateUI(); 
} 

機能:)

答えて

0

、これを使用して、このNonSwipableViewPagerクラスを使用しますに電話するときにのみページを変更することができます210。その後

<yourpackagename.NonSwipeableViewPager 

あなたの活動や断片でそれを初期化:

NonSwipeableViewPager pager = (NonSwipeableViewPager) findViewById(R.id.pager); 

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*/); 
     } 
    } 

ViewPagerを交換、その後、あなたはそれをしたいレイアウトで、プロジェクトにこのクラスを追加します。

関連する問題