package com.gh.base; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.view.View; import com.gh.base.adapter.FragmentAdapter; import com.gh.common.view.TabIndicatorView; import com.gh.gamecenter.R; import com.lightgame.view.NoScrollableViewPager; import java.util.ArrayList; import java.util.List; import butterknife.BindView; /** * Created by khy on 15/03/18. */ public abstract class BaseActivity_TabLayout extends BaseActivity implements ViewPager.OnPageChangeListener { public static final String PAGE_INDEX = "PAGE_INDEX"; @BindView(R.id.activity_tab_layout) protected TabLayout mTabLayout; @BindView(R.id.activity_view_pager) protected NoScrollableViewPager mViewPager; @BindView(R.id.activity_tab_indicator) protected TabIndicatorView mTabIndicatorView; protected List mFragmentsList; protected List mTabTitleList; protected int mCheckedIndex = 0; protected abstract void initFragmentList(List fragments); protected abstract void initTabTitleList(List tabTitleList); protected int provideIndicatorWidth() { return 65; } protected View provideTabView(int position, String tabTitle) { return null; } @Override protected int getLayoutId() { return R.layout.activity_tablayout_viewpager; } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); List fragments = getSupportFragmentManager().getFragments(); if (fragments != null) { for (Fragment fragment : fragments) { fragment.onActivityResult(requestCode, resultCode, data); } } } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent() != null) mCheckedIndex = getIntent().getIntExtra(PAGE_INDEX, 0); mFragmentsList = new ArrayList<>(); initFragmentList(mFragmentsList); mTabTitleList = new ArrayList<>(); initTabTitleList(mTabTitleList); mViewPager.setOffscreenPageLimit(mFragmentsList.size()); mViewPager.addOnPageChangeListener(this); mViewPager.setAdapter(new FragmentAdapter(getSupportFragmentManager(), mFragmentsList, mTabTitleList)); mViewPager.setCurrentItem(mCheckedIndex); mTabLayout.setupWithViewPager(mViewPager); mTabIndicatorView.setupWithTabLayout(mTabLayout); mTabIndicatorView.setupWithViewPager(mViewPager); mTabIndicatorView.setIndicatorWidth(provideIndicatorWidth()); for (int i = 0; i < mTabLayout.getTabCount(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); if (tab == null) continue; View tabView = provideTabView(i, tab.getText() != null ? tab.getText().toString() : ""); if (tabView == null) continue; tab.setCustomView(tabView); } } @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }