TabLayout——選項卡布局,經過選項卡的方式切換view並非material design中才有的新概念,選項卡既能夠固定,也能夠滾動顯示效果以下:android
經過addTab方法能夠實現選項卡的動態添加:ide
tabLayout.addTab(tabLayout.newTab().setText("tab1"));
經過setupWithViewPager()方法能夠和Viewpager關聯起來。此方法使tab的選中事件能更新ViewPager,同時ViewPager 的頁面改變能更新tab的選中狀態。注意若是與Viewpager關聯使用是經過PagerAdapter 的 getPageTitle() 建立選項卡。佈局
private void setupViewPager(ViewPager viewPager) { Adapter adapter = new Adapter(getSupportFragmentManager()); adapter.addFragment(new CheeseListFragment(), "Category 1"); adapter.addFragment(new CheeseListFragment(), "Category 2"); adapter.addFragment(new CheeseListFragment(), "Category 3"); viewPager.setAdapter(adapter); }
static class Adapter extends FragmentPagerAdapter { private final List<Fragment> mFragments = new ArrayList<>(); private final List<String> mFragmentTitles = new ArrayList<>(); public Adapter(FragmentManager fm) { super(fm); } public void addFragment(Fragment fragment, String title) { mFragments.add(fragment); mFragmentTitles.add(title); } @Override public Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitles.get(position); } }
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); if (viewPager != null) { setupViewPager(viewPager); } TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager);
xml中的聲明spa
<android.support.design.widget.TabLayout android:id="@+id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" />
此外當選項卡數量過多時經過tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);能夠設置爲選項卡水平滾動。code