你的位置:首页 > 操作系统

[操作系统]Android Design Support Library——TabLayout


  TabLayout——选项卡布局,通过选项卡的方式切换view并不是material design中才有的新概念,选项卡既可以固定,也可以滚动显示效果如下:

  

  通过addTab方法可以实现选项卡的动态添加:

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

  

    <android.support.design.widget.TabLayout      android:id="@+id/tabs"      android:layout_width="match_parent"      android:layout_height="wrap_content" />

   此外当选项卡数量过多时通过tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);可以设置为选项卡水平滚动。