xml布局
tabMode有两种属性:fixed和 scrollable;fixed:指的是固定tab;scrollable指的是tab可滑动。
tabGravity有两种属性:center和fill;center指的是居中显示,fill指的是沾满全屏。
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabMode="scrollable"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabIndicatorHeight="3dp"
/>
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
activity类
public class MainActivity extends FragmentActivity {
private TabLayout tab_layout;
private ViewPager view_pager;
private ContentPagerAdapter adapter;
private ArrayList<Fragment> fragmentList;
private ArrayList<String> titleList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initData();
initView();
}
private void initData() {
fragmentList = new ArrayList<>();
titleList = new ArrayList<>();
for (int i = 0; i < 20; i++) {
fragmentList.add(new TabFragment1());
titleList.add("tab"+i);
}
}
private void initView() {
tab_layout = (TabLayout) findViewById(R.id.tab_layout);
view_pager = (ViewPager) findViewById(R.id.view_pager);
// tab_layout.setTabMode(TabLayout.MODE_SCROLLABLE);//设置可滚动
// tab_layout.setSelectedTabIndicatorHeight(3);//设置底部线宽
//设置 tab之间的间距
ViewCompat.setElevation(tab_layout, 10);
//关联相对应的viewPager
tab_layout.setupWithViewPager(view_pager);
//设置页面缓存个数
viewPager.setOffscreenPageLimit(3);
adapter = new ContentPagerAdapter(getSupportFragmentManager(), fragmentList, titleList);
view_pager.setAdapter(adapter);
}
}
adapter适配器
public class ContentPagerAdapter extends FragmentPagerAdapter {
private ArrayList<Fragment> mFragmentList = new ArrayList<>();
private ArrayList<String> mTitleList = new ArrayList<>();
public ContentPagerAdapter(FragmentManager fm, ArrayList<Fragment> fragmentList, ArrayList<String> titleList) {
super(fm);
mFragmentList = fragmentList;
mTitleList = titleList;
}
@Override
public Fragment getItem(int position) {
return mFragmentList.get(position);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitleList.get(position);
}
}