2016-08-17 72 views
0

我想开发一个顶部滑动菜单,如下所示。Android选项卡菜单。如何分割片段

Tab example

我看过很多教程,但每个人的作品与片段,使得相同的功能。我应该用什么来处理具有各自功能的碎片?而且,我还可以在各种文件中分离碎片的代码吗? (我的意思是每个片段1个文件)。

我了解,随着活动在这方面的工作已被弃用(TabActivity

This class was deprecated in API level 13. 
New applications should use Fragments instead of this class; to continue to 
run on older devices, you can use the v4 support library which provides a 
version of the Fragment API that is compatible down to DONUT. 
+0

是要与这些标签的使用不同,不同的片段? –

+1

@SantiGil试试这个演示:http://www.androidhive.info/2013/10/android-tab-layout-with-swipeable-views-1/你可以创建不同的片段并根据你的要求在xml文件中更改 –

+0

@ChiragArora是的,我想要一个配置文件选项卡,另一个列出产品的选项卡(我的意思是不同的功能)。而且,一个片段将创建另一个片段,维护标签菜单(就像当你开始一个新的活动时)。 –

回答

2

使用工具栏与搜索呼机象下面这样:

XML文件:

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:layout_scrollFlags="scroll|enterAlways" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tabs" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     app:tabMode="fixed" 
     app:tabGravity="fill"/> 
</android.support.design.widget.AppBarLayout> 

<android.support.v4.view.ViewPager 
    android:id="@+id/viewpager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" /> 

类文件代码:

public class MainActivity extends AppCompatActivity { 

private Toolbar toolbar; 
private TabLayout tabLayout; 
private ViewPager viewPager; 

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

    toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 

    viewPager = (ViewPager) findViewById(R.id.viewpager); 
    setupViewPager(viewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(viewPager); 
} 

private void setupViewPager(ViewPager viewPager) { 
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); 
    adapter.addFrag(new OneFragment(), "ONE"); 
    adapter.addFrag(new TwoFragment(), "TWO"); 
    adapter.addFrag(new ThreeFragment(), "THREE"); 
    adapter.addFrag(new FourFragment(), "FOUR"); 
    adapter.addFrag(new FiveFragment(), "FIVE"); 
    adapter.addFrag(new SixFragment(), "SIX"); 
    adapter.addFrag(new SevenFragment(), "SEVEN"); 
    adapter.addFrag(new EightFragment(), "EIGHT"); 
    adapter.addFrag(new NineFragment(), "NINE"); 
    adapter.addFrag(new TenFragment(), "TEN"); 
    viewPager.setAdapter(adapter); 
} 

class ViewPagerAdapter extends FragmentPagerAdapter { 
    private final List<Fragment> mFragmentList = new ArrayList<>(); 
    private final List<String> mFragmentTitleList = new ArrayList<>(); 

    public ViewPagerAdapter(FragmentManager manager) { 
     super(manager); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return mFragmentList.get(position); 
    } 

    @Override 
    public int getCount() { 
     return mFragmentList.size(); 
    } 

    public void addFrag(Fragment fragment, String title) { 
     mFragmentList.add(fragment); 
     mFragmentTitleList.add(title); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     return mFragmentTitleList.get(position); 
    } 
} 

}

欲了解更多详情,请按照下面的链接: Tabs with pager

+0

如果我想要一个片段“调用”另一个片段,并且我想维护标签菜单(也是当前标签),这可能吗? –

+1

是@SantiGil请检查下面的链接为您的这个查询http://stackoverflow.com/questions/7723964/replace-fragment-inside-a-viewpager –