先上图
参考 https://blog.csdn.net/bskfnvjtlyzmv867/article/details/70766639
教程
1.创建FragmentPagerAdapter子类管理Fragment
public class PageAdapter extends FragmentPagerAdapter {
private int num;
private HashMap<Integer, Fragment> mFragmentHashMap = new HashMap<>();
public PageAdapter(FragmentManager fm, int num) {
super(fm);
this.num = num;
}
@Override
public Fragment getItem(int position) {
return createFragment(position);
}
@Override
public int getCount() {
return num;
}
private Fragment createFragment(int pos) {
Fragment fragment = mFragmentHashMap.get(pos);
if (fragment == null) {
switch (pos) {
case 0:
fragment = new Fragment1();
Log.i("fragment", "fragment1");
break;
case 1:
fragment = new Fragment2();
Log.i("fragment", "fragment2");
break;
case 2:
fragment = new Fragment3();
Log.i("fragment", "fragment3");
break;
case 3:
fragment = new Fragment4();
Log.i("fragment", "fragment4");
break;
}
mFragmentHashMap.put(pos, fragment);
}
return fragment;
}
}
2.MainActivity中实现
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout);
//添加标签
tabLayout.addTab(tabLayout.newTab().setText("tab1"));
tabLayout.addTab(tabLayout.newTab().setText("tab2"));
tabLayout.addTab(tabLayout.newTab().setText("tab3"));
tabLayout.addTab(tabLayout.newTab().setText("tab4"));
//设置adapter,滑动时间
final ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(new PageAdapter(getSupportFragmentManager(), tabLayout.getTabCount()));
viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
//绑定tab点击事件
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
布局
<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="50dp"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
另外
Tab想要设置icon的话,可以继续用setIcon方法,如下:
tabLayout.addTab(tabLayout.newTab().setText("tab1").setIcon(R.drawable.ic_menu_camera));
tablayout 一点小东西
app:tabIndicatorColor="@color/holo_red_light" //设置指示器颜色
app:tabSelectedTextColor="@color/holo_red_light" //设置选中文字颜色