在Android中实现选项卡

时间:2016-03-09 09:11:51

标签: android android-fragments

我喜欢检查我做的是正确的,还是有更好的方式。 我喜欢在Android应用程序中实现选项卡。我发现我应该使用Fragment。

然后我用TabbedActivity实现了我的应用程序。我在Tabs中添加了内容。 我在onCreate()的{​​{1}}中添加了Tab作为

MainActivity

由于我想为两个不同的片段(frangment1.xml和frangment2.xml)使用两个xmls,我在PlaceholderFragment类中创建了两个空白片段,我使用{{添加了frangment1.xml和frangment2.xml 1}}变量

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
        tabLayout.addTab(tabLayout.newTab().setText("Accelerometer"));
        tabLayout.addTab(tabLayout.newTab().setText("Gyroscope"));
        // Create the adapter that will return a fragment for each of the three
        // primary sections of the activity.
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.container);
        mViewPager.setAdapter(mSectionsPagerAdapter);
        mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
        tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                mViewPager.setCurrentItem(tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {

            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {

            }
        });


    }

我喜欢检查是正确的方式还是其他任何更好的方式。

2 个答案:

答案 0 :(得分:1)

嘿,关于这段代码没什么好说的。我没有尝试过运行你的代码。但如果它为你奔跑它的罚款。即使我在android中使用这种类型的Tabs实现。但是因为根据新的android设计库,从那时起有很多变化。有许多新功能,不仅在设计方面,而且在功能方面。您可能想查看此链接,其中一些是在此处实现的。

http://www.androidhive.info/2015/09/android-material-design-working-with-tabs/

另外,对于谷歌选项卡上的指南,他们的实现,规范和所有这些东西都会检查出来。

https://www.google.com/design/spec/components/tabs.html#tabs-usage

答案 1 :(得分:0)

不,这不对。

你不应该在一个片段中制作两个片段。您应该将它们分开以逐步退出每个方法中的if条件(检查哪个视图是膨胀的)。假设现在你有两个独立的片段,你只需要检查适配器中的位置,选择你需要哪个片段。

@Override
public Fragment getItem(int position) {
    switch(position) {
        case 0:
            return new MyFragment1();
            break;
        case 1:
            return new MyFragment2();
            break;
    }
    return null;
}