Tablayout
android studio 中添加依赖
compile 'com.android.support:design:22.2.0'
xml布局中
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/green"
app:tabIndicatorColor="@color/white"
app:tabSelectedTextColor="@color/red"
app:tabTextColor="@color/black" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
其中,app:tabIndicatorColor="@color/white" //下划线的颜色
app:tabSelectedTextColor="@color/red" //选中条目的字体颜色
app:tabTextColor="@color/black" //不选中的字体颜色
Activity中
public class TablayoutActivity extends BaseActivity {
private List<String> titleList;
private List<Fragment> fragmentList;
private TablayoutFragment tablayoutFragment;
private FrescoFragment frescoFragment;
private PicassoFragment picassoFragment;
private SwipeRefeshLayoutFragment swipeRefeshLayoutFragment;
private TablayoutFragmentAdapter tablayoutFragmentAdapter;
@BindView(R.id.tablayout)
TabLayout tablayout;
@BindView(R.id.viewpager)
ViewPager viewpager;
@Override
public void setView() {
setContentView(R.layout.activity_tablayout);
ButterKnife.bind(this);
setLeft();
setMid("Tablayout");
}
@Override
public void init() {
titleList = new ArrayList<>();
fragmentList = new ArrayList<>();
titleList.add("Tablayout");
titleList.add("Fresco");
titleList.add("Picasso");
titleList.add("SwipeRefeshLayout");
tablayout.setTabMode(TabLayout.MODE_SCROLLABLE);
for (int i = 0; i < titleList.size(); i++) {
tablayout.addTab(tablayout.newTab().setText(titleList.get(i)));
}
tablayoutFragment = new TablayoutFragment();
frescoFragment = new FrescoFragment();
picassoFragment = new PicassoFragment();
swipeRefeshLayoutFragment = new SwipeRefeshLayoutFragment();
fragmentList.add(tablayoutFragment);
fragmentList.add(frescoFragment);
fragmentList.add(picassoFragment);
fragmentList.add(swipeRefeshLayoutFragment);
tablayoutFragmentAdapter = new TablayoutFragmentAdapter(getSupportFragmentManager(), fragmentList, titleList);
viewpager.setAdapter(tablayoutFragmentAdapter);
tablayout.setupWithViewPager(viewpager);
}
tablayout.setTabMode();设置tablayout的模式,属性值有两种
TabLayout.MODE_SCROLLABLE:tabs很多的时候显示完整,可以滑动
TabLayout.MODE_FIXED:tabs很多的时候显示不完整,全部显示,不能滑动
MODE_FIXED:Fixed tabs display all tabs concurrently and are best used with
content that benefits from quick pivots between tabs.
MODE_SCROLLABLE:Scrollable tabs display a subset of tabs at any given moment,
and can contain longer tab labels and a larger number of tabs.
viewpager的adapter
public class TablayoutFragmentAdapter extends FragmentPagerAdapter {
private List<Fragment> list;
private List<String> stringList;
public TablayoutFragmentAdapter(FragmentManager fm, List<Fragment> list, List<String> stringList) {
super(fm);
this.list = list;
this.stringList = stringList;
}
@Override
public Fragment getItem(int position) {
return list.get(position);
}
@Override
public int getCount() {
return list.size();
}
@Override
public CharSequence getPageTitle(int position) {
return stringList.get(position % stringList.size());
}
}
public CharSequence getPageTitle(int position) {
return stringList.get(position % stringList.size());
}
这个方法是用来显示tabs上的文字的