android - Android 中的 Viewpager

标签 android android-viewpager

我如何在两个方向创建ViewPager。是否可以 ?如果可能的话我该如何实现它。

我使用以下代码在单向创建了viewpager:

private void initialisePaging() {

        List<Fragment> fragments = new Vector<Fragment>();
        fragments.add(Fragment.instantiate(this, Fragment0.class.getName()));
        fragments.add(Fragment.instantiate(this, Fragment1.class.getName()));
        fragments.add(Fragment.instantiate(this, Fragment2.class.getName()));
        this.mPagerAdapter = new MyPagerAdapter(super.getSupportFragmentManager(), fragments);

        ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager);
        pager.setAdapter(this.mPagerAdapter);
    }

有人可以帮我吗..谢谢!!

最佳答案

好吧,据我了解,您有一个 Fragments 列表,您希望用户从 Pages/Fragments 的中间开始code>,我已经使用并测试了以下代码,它对我来说工作正常。

如果您知道 Fragments 的数量并且不动态更改 Fragments 那么这可以更简单地处理,但我将取消您在中提供的代码OP。尝试一下:

public class MainActivity extends FragmentActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        // This is going to initialize our Fragment list
        mSectionsPagerAdapter.init();

        // Now we are going to determine the starting position
        int startPos = mSectionsPagerAdapter.getStartPosition();

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mSectionsPagerAdapter);

        // AFTER we set the adapter we will define our start position
        mViewPager.setCurrentItem(startPos);
    }
}

现在让我们看看我们的 FragmentPagerAdapter

我向此类添加了几个方法,即 init() 方法、setCount()getStartPosition()

public class SectionsPagerAdapter extends FragmentPagerAdapter {
    private int _count = 2;
    private int _start = 0;

    List<Fragment> fragments;

    public SectionsPagerAdapter(FragmentManager fm) { 
        super(fm);
    }

    public void init() {
        fragments = new ArrayList<Fragment>();
        fragments.add(new MyFragmentOne());
        fragments.add(new MyFragmentTwo());
        fragments.add(new MyFragmentThree());
        fragments.add(new MyFragmentFour());
        fragments.add(new MyFragmentFive());
        setCount();
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        return super.instantiateItem(container, position);
    }

    @Override
    public Fragment getItem(int position) {
        return (fragments.size() >= position) ? fragments.get(position) : null;
    }

    // We have created this method to get the starting position
    // You might want to play around with this to make sure the returned
    // position fits what you want for odd numbered Fragment Pages
    public int getStartPosition() {
        _start = fragments.size() / 2;
        return Math.round(_start);
    }

    public void setCount() { this._count = fragments.size(); }

    @Override
    public int getCount() { return this._count; }

    // You will need to change this to get the appropriate title per page    
    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
        case 0:
            return getString(R.string.company_select).toUpperCase(Locale.ENGLISH);
        case 1:
            return getString(R.string.companies_pending).toUpperCase(Locale.ENGLISH);
        }
        return null;
    }
}

请注意:您没有提供您尝试过的示例,因此我已经为您编写了代码。 StackOverflow 不是这样的地方,将来当出现问题时,请将您尝试过的内容告诉我们,我们将尽力帮助确定问题所在。

关于android - Android 中的 Viewpager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15874237/

相关文章:

java - Android:从 PagerAdapter 获取 fragment

android - 如何使用Android ViewPager

android - 如何重新加载/刷新已经显示过一次的 fragment ?

android - 查看Android Studio中的日志停留在Gradle:构建上

android - 将文件添加到 .apk

java - GridView 项目的

android - 如果我有带有回收器 View 的 View 寻呼机,如何使 Activity 可以垂直滚动?

android - 在适配器的构造函数中传递 fragment

android - android 中的 Socket.io 和 node.js 示例

Android 偏好 - 在 SettingsActivity 中滚动到屏幕外时 SwtichPrefrence 发生变化