摘要
简单的例纸
1.布局文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<android.support.design.widget.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabGravity="fill"
app:tabIndicatorHeight="1dp"
app:tabSelectedTextColor="@color/colorPrimary"
app:tabTextColor="@color/colorAccent" />
<android.support.v4.view.ViewPager
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
2.创建FragmentPagerAdapter
public class SKFragmentPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> data;
private SKFragmentPagerAdapter(FragmentManager fm) {
super(fm);
data = new ArrayList<>();
}
@Override
public Fragment getItem(int position) {
return data.get(position);
}
@Override
public int getCount() {
return data.size();
}
public <T extends Fragment> void add(T fragment) {
data.add(fragment);
}
}
3.初始化ViewPager
SKFragmentPagerAdapter adapter =
new SKFragmentPagerAdapter(getSupportFragmentManager());
adapter.add(new MainFragment());
adapter.add(new MainFragment());
adapter.add(new MainFragment());
adapter.add(new MainFragment());
viewPager.setAdapter(adapter);
4.初始化选项卡
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
tabLayout.addTab(tabLayout.newTab());
5.绑定ViewPager和TabLayout
在绑定之前要确保已经进行了setAdapter和addTab
tabLayout.setupWithViewPager(viewPager);
6.添加TabLayout的标题
标题内容添加不能在 5 之前调用!否则会出现标题内容不显示的现象
tabLayout.getTabAt(0).setText(s);
tabLayout.getTabAt(1).setText(s);
tabLayout.getTabAt(2).setText(s);
tabLayout.getTabAt(3).setText(s);
7.另一种添加TabLayout标题的方法
不使用6中提供的方式,而是重写 getPageTitle 就可以设置标题。
public static final String[] TITLE_LIST = {"我发起", "待处理", "已处理", "抄送我的"};
public class SKFragmentPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> data;
private SKFragmentPagerAdapter(FragmentManager fm) {
super(fm);
data = new ArrayList<>();
}
@Override
public Fragment getItem(int position) {
return data.get(position);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return (TITLE_LIST == null || position >= TITLE_LIST.length) ? "" :
TITLE_LIST[position];
}
@Override
public int getCount() {
return data.size();
}
public <T extends Fragment> void add(T fragment) {
data.add(fragment);
}
}
参考:
TabLayout+ViewPager+Fragment实现切页展示:https://blog.csdn.net/qq_34773981/article/details/82022647