在水平方向上以圆形方式对碎片进行Viewpager导航



Hii我的问题是我有6个frgments,我正在使用ViewPager从一个页面导航到另一个页面。但我希望在第6个fragment之后通过一次水平向前滑动返回到1个Fragment。就像从6->1

尝试在队列末尾再次添加第一个片段,当加载时,使用viewPager.setCurrentItem(0,false)移动到第一个片段。

实际上,它并不总是有效的。将此答案ViewPager称为循环队列/包装,

我做了一个简单的例子来看看:

public class MainActivity extends FragmentActivity  {
private static final int NUM_PAGES = 6;
private ViewPager pager;
private PagerAdapter pagerAdapter;
private List<SlideFragment> slideList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    slideList = new ArrayList<SlideFragment>();
    for (int i = 0; i<NUM_PAGES; i++){
        SlideFragment slide = new SlideFragment();
        slide.setIndex(i+1);
        slideList.add(slide);
    }
    pager = (ViewPager) findViewById(R.id.pager);
    pagerAdapter = new ScreenSlidePagerAdapter(getSupportFragmentManager());
    pager.setAdapter(pagerAdapter);
}
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
    public ScreenSlidePagerAdapter(FragmentManager fm) {
        super(fm);
    }
    @Override
    public Fragment getItem(int position) {
        int _pos = position % NUM_PAGES;
        return slideList.get(_pos);
    }
    @Override
    public int getCount() {
        return Integer.MAX_VALUE;
    }
}
}

Fragment类:

public class SlideFragment extends Fragment {
private int index;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    ViewGroup root = (ViewGroup)inflater.inflate(R.layout.slide, container, false);
    TextView tw = (TextView) root.findViewById(R.id.textView);
    tw.setText(Integer.toString(index));
    return root;
}
public void setIndex(int index){
    this.index = index;
}
}

最新更新