不同风格的导航 - 手机与平板电脑?

时间:2013-02-12 13:34:26

标签: android android-fragments

我在片段API方面相当不错,我知道如何在手机/平板电脑上创建主/细节模式。 但我如何在手机和平​​板电脑中创建不同风格的导航?

最明显的例子是在手机上滑动标签和某些平板电脑布局,所有片段都在里面铺设,没有滑动标签。

除了巨大的if语句之外,还有一些优雅的方式吗?

enter image description here

//修改

那么你会做什么,正如我所设想的那样,是创建创建两个布局(手机 - 查看寻呼机/平板电脑 - 三个静态片段),并在活动中onCreate检查布局中的某些内容,以便弄清楚你是手机还是平板电脑。 然后只需初始化标签导航,如果您是平板电脑,则暂停。这应该有效。

来自IO 2012 APP的

CODE SNIPPET

@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);
    }
}

任何已经在手机上有标签导航的人,请考虑在平板电脑上实现这一点,如果它适合您的设计。你已经准备好了片段api,所以没有任何借口,真的。

1 个答案:

答案 0 :(得分:1)

你可以看一下Roman Nurik的2012 I / O应用程序,它可以根据尺寸和方向的每种可能组合切换导航/布局;

http://code.google.com/p/iosched/