#使用tabLayout和ViewPager配合实现滑动标签页
效果图如下:
添加依赖:
compile 'com.android.support:design:23.2.0'
activity_tablayout.xml:
可以改变指示器颜色 标签文字颜色 当前选中的标签文字颜色
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:tabIndicatorColor="#ffffff"
app:tabSelectedTextColor="@color/gray"
app:tabTextColor="@color/white">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
>
</android.support.v4.view.ViewPager>
TabLayoutActivity.java
public class TablayoutActivity extends BaseActivity{
private TabLayout mTabLayout;
private ViewPager mViewPager;
private List<Fragment> mFragments;
private String[] mTitles = {"要闻", "英雄联盟", "守望先锋", "NBA", "程序员", "电竞",
"经济"};
@Override
protected BasePresenter setPresenter() {
return null;
}
@Override
protected int setContentViewId() {
return R.layout.activity_tablayout;
}
@Override
protected void initView() {
mTabLayout= (TabLayout) findViewById(R.id.tablayout);
//滑动模式当标签很多的时候就一直往后添加,以滑动的效果显示出来
mTabLayout.setTabMode (TabLayout.MODE_SCROLLABLE);
mViewPager= (ViewPager) findViewById(R.id.viewpager);
//预加载
mViewPager.setOffscreenPageLimit(0);
//viewpage滑动监听
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int
positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
@Override
protected void initData() {
for (int i = 0; i < mTitles.length; i++) {
mTabLayout.addTab(mTabLayout.newTab().setText(mTitles[i]));
}
mFragments=new ArrayList<>();
mFragments.add(new OneFragment());
mFragments.add(new TwoFragment());
mFragments.add(new ThreeFragment());
mFragments.add(new FourFragment());
mFragments.add(new FiveFragment());
mFragments.add(new SixFragment());
mFragments.add(new SevenFragment());
//设置适配器
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int position) {
return mFragments.get(position);
}
@Override
public int getCount() {
return mFragments.size();
}
@Override
public CharSequence getPageTitle(int position) {
return mTitles[position];
}
});
//加载适配器
mTabLayout.setupWithViewPager(mViewPager);
}
}