我在 Fragments API 方面相当出色,我知道如何在手机/平板电脑上创建主/细节模式。 但是我如何在手机和平板电脑中创建不同风格的导航呢?
最明显的例子是手机上的滑动标签和某种平板电脑布局,所有片段都放在里面,没有滑动标签。
除了巨大的 if 语句之外,还有其他优雅的方法吗?
//编辑
所以你会做什么,正如我推测的那样,创建两个布局(手机 - 查看寻呼机/平板电脑 - 三个静态片段)并在活动的 onCreate 检查布局中的某些内容以确定你是在手机还是平板电脑中。如果您在平板电脑中,则只需初始化标签导航/或不初始化。那应该行得通。
来自 IO 2012 应用程序的代码片段
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
FragmentManager fm = getSupportFragmentManager();
mViewPager = (ViewPager) findViewById(R.id.pager);
if (mViewPager != null) {
// Phone setup
mViewPager.setAdapter(new HomePagerAdapter(getSupportFragmentManager()));
mViewPager.setOnPageChangeListener(this);
final ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
actionBar.addTab(actionBar.newTab()
.setText(R.string.title_my_schedule)
.setTabListener(this));
actionBar.addTab(actionBar.newTab()
.setText(R.string.title_explore)
.setTabListener(this));
actionBar.addTab(actionBar.newTab()
.setText(R.string.title_stream)
.setTabListener(this));
homeScreenLabel = getString(R.string.title_my_schedule);
} else {
//Tablet setup
mExploreFragment = (ExploreFragment) fm.findFragmentById(R.id.fragment_tracks);
mMyScheduleFragment = (MyScheduleFragment) fm.findFragmentById(R.id.fragment_my_schedule);
mSocialStreamFragment = (SocialStreamFragment) fm.findFragmentById(R.id.fragment_stream);
}
}
任何在手机上已经有标签导航的人,请考虑在平板电脑上实现它,如果它适合你的设计。你已经准备好了 Fragments api,所以真的没有任何借口。