ViewPager滚动半个屏幕

5

我有一个 Fragment 列表需要放到 ViewPager 中(目前还没有问题)。

ArrayList<Fragment>  fragmentList = new ArrayList<Fragment>();
fragmentList.add(new fragment1());
fragmentList.add(new fragment2());
fragmentList.add(new fragment3());
fragmentList.add(new fragment4());
FragmentAdapter mAdapter = new FragmentAdapter( mFragmentManager, fragmentList);
mPager = (ViewPager) view.findViewById(R.id.pager_items_list);
mPager.setCurrentItem(0);
mPager.setAdapter(mAdapter);
mPager.setOnPageChangeListener(pageChangeListener);

适配器
public class FragmentAdapter extends FragmentStatePagerAdapter {
    ArrayList<Fragment> fragmentsList;
    public FragmentAdapter(FragmentManager fm, ArrayList<Fragment> fragmentsList) {
        super(fm);
        this.fragmentsList = fragmentsList;
    }
    @Override
    public int getCount() { 
        return fragmentsList.size(); 
    }       
    @Override
    public Fragment getItem(int position) {
        if (position<fragmentsList.size() & fragmentsList.get(position)!=null) {
            return fragmentsList.get(position);
        }
        return null;
    }
}

我需要做的是让ViewPager在屏幕上显示两个项目,但每次滚动只向前或向后移动一个项目。
以下图片可能有助于解释我的意思: Half screen scroll ViewPager

2
嗨,这里有一篇博客,可能会有所帮助:http://commonsware.com/blog/2012/08/20/multiple-view-viewpager-options.html - TeeTracker
太棒了!这正是我需要的!你为我节省了很多时间! - Nifhel
1个回答

15

感谢TeeTracker的评论,我找到了解决您问题的方法。我只需要在我的适配器中覆盖getPageWidth方法:

@Override
public float getPageWidth(int position) {
    return(0.5f);
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接