1.主页面布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".activity.CouponUserActivity">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_coupon"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager.widget.ViewPager
android:id="@+id/vp_coupon"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
2.主Activity逻辑
public class CouponUserActivity extends BaseAppCompatActivity {
@BindView(R.id.webview_title_text)
TextView webviewTitleText;
@BindView(R.id.tab_coupon)
TabLayout tabCoupon;
@BindView(R.id.vp_coupon)
ViewPager vpCoupon;
private List<Fragment> pages;//页面集合
private List<String> tabTitles;//页卡标题集合
private FragTitlePagerAdap pagerAdap;
@Override
protected int getContentLayout() {
return R.layout.activity_coupon_user;
}
@Override
protected void initGui() {
tabCoupon.setSelectedTabIndicatorColor(Constant.getMaincolor());
webviewTitleText.setText("优惠券");
tabTitles = new ArrayList<>();
tabTitles.add("全部");
tabTitles.add("未使用");
tabTitles.add("已使用");
pages = new ArrayList<>();
pages.add(new CouponFragment());
pages.add(new Coupon2Fragment());
pages.add(new Coupon3Fragment());
tabCoupon.setTabMode(TabLayout.MODE_FIXED);
tabCoupon.addTab(tabCoupon.newTab().setText(tabTitles.get(0)));
tabCoupon.addTab(tabCoupon.newTab().setText(tabTitles.get(1)));
tabCoupon.addTab(tabCoupon.newTab().setText(tabTitles.get(2)));
FragmentManager manager = getSupportFragmentManager();
pagerAdap = new FragTitlePagerAdap(manager, pages, tabTitles);
tabCoupon.setTabsFromPagerAdapter(pagerAdap);//给Tabs设置适配器
vpCoupon.setAdapter(pagerAdap);//给ViewPager设置适配器
tabCoupon.setupWithViewPager(vpCoupon);//将TabLayout和ViewPager关联起来。
}
@Override
protected void initAction() {
}
@Override
protected void initData() {
}
}
3.FragTitlePagerAdap
public class FragTitlePagerAdap extends FragmentPagerAdapter {
private List<Fragment> pages;
private List<String> titles;
public FragTitlePagerAdap(FragmentManager fm, List<Fragment> pages) {
super(fm);
this.pages = pages;
}
public FragTitlePagerAdap(FragmentManager fm, List<Fragment> pages, List<String> titles) {
super(fm);
this.pages = pages;
this.titles = titles;
}
public void setPages(List<Fragment> pages) {
this.pages = pages;
notifyDataSetChanged();
}
@Override
public int getCount() {
return (pages != null && pages.size() > 0) ? pages.size() : 0;
}
@Override
public Fragment getItem(int position) {
return pages.get(position);
}
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);//页卡标题
}
}