你需要正确的库来实现你想要的功能。
基本上,你需要一个ViewPager库。这是我的建议:
1. ActionbarSherlock
它非常容易使用,我就不多作解释了。
2. ViewPagerExtensions
你可以在
这里找到它。下载ZIP文件并从中创建一个新项目。
实现来自该项目的com.astuetz.viewpager.extensions.SwipeyTabsView。有易于跟随的示例,它恰好符合您的要求。甚至有其他选项卡样式可供选择(包括与ICS一起提供的新的People选项卡)。此外,很容易将其样式设置为与您的应用程序相匹配。
3. FragmentPagerAdapter
最后,您可以使用支持库(v4)中的该类。
祝你好运,如果需要更多帮助,请随时问我。
不需要覆盖FragmentPagerAdapter中的instantiateItem方法,如果您正在使用我建议的内容。 您只需要:
1. 提供一个构造函数,并调用super实现;
2. 重写getCount以返回pager中片段的数量,以及
3. getItem,这是您用于返回要创建的片段的方法。
以下是我这里的代码示例(完整的工作生产示例)。 它是实现pager的activity的内部类:
static class MyFragmentPagerAdapter extends FragmentPagerAdapter {
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return 2;
}
@Override
public Fragment getItem(int position) {
Fragment f;
switch(position) {
case 0:
f= new ItemSalesDataFragment();
break;
case 1:
f= new DepartmentChooserFragment();
break;
default:
throw new IllegalArgumentException("not this many fragments: " + position);
}
return f;
}
}
正如您所看到的,此分页程序处理两个“页面”,左侧显示销售数据,右侧允许用户选择部门。这些在getItem
方法中返回。可以使用适当的片段(可以使用您已经拥有的任何片段,不需要修改)。
按预期,您需要将所有内容组合在一起,方法是1)创建一个实例化MyFragmentPagerAdapter
的对象,并2)将适配器设置为您刚刚实例化的类的ViewPager
对象。正如您所看到的,它的getItem
方法将向分页程序“提供”您需要的所有片段。例如:
mFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager())
mViewPager.setAdapter(mFragmentPagerAdapter)
当然,还有其他事情要做,比如创建选项卡按钮并将所有这些连接起来以进行交叉通信。我建议查看从GitHub下载的ViewPagerExtensions ZIP文件中提供的示例。这只是回答您评论中的问题。正如您所看到的,使用这个库的代码并不多。
Fragments
之间划动,你需要使用ViewPager
。 - adneal