TabLayout提供了一个水平的布局用来展示Tabs
Design库:AS有直接的引用
现在就可以直接使用
1.最简单的demo
<android.support.design.widget.TabLayout
android:id="@+id/tablayout"
android:layout_width="match_parent"
android:layout_height="44dp"
/>
在MainActivity中
fragments = new ArrayList<>();
for (int i = 0; i < 6; i++) {
DefaultFragment defaultFragment = new DefaultFragment();
//defaultFragment.index=i;
Bundle bundle = new Bundle();
bundle.putString("categoryId", i + "");
defaultFragment.setArguments(bundle);
fragments.add(defaultFragment);
}
tabs = new ArrayList<>();
for (int i = 0; i < tabCount; i++) {
tabs.add("标签" + i);
}
fm = getSupportFragmentManager();
adapter = new NW5000NewsPagerAdapter(fm, fragments,tabs);
mViewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(mViewPager);
在adapter中
public CharSequence getPageTitle(int position) {
return tabs.get(position);
}
注意:主题修改
否则会报错
2.也可以自定义样式
for (int i = 0; i < toolbarTab.getTabCount(); i++) { TabLayout.Tab tab = toolbarTab.getTabAt(i); TextView textView=new TextView(this) if (tab != null) { tab.setCustomView(textView); } }
注意:自定义后,选中的字体的颜色将会不会改变,且开始时没有默认的字体颜色
所以我们要加判断
for (int i = 0; i < toolbarTab.getTabCount(); i++) { TabLayout.Tab tab = toolbarTab.getTabAt(i); TextView textView=new TextView(this) if (tab != null) { //默认选中第一条 if (i==0){ textView.setTextColor(Color.RED); }else { textView.setTextColor(Color.BLUE); } tab.setCustomView(textView); } }
对左右滑动的监听
toolbarTab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
//在这里可以设置选中状态下 tab字体显示样式
viewPager.setCurrentItem(tab.getPosition());
View view = tab.getCustomView();
if (null != view && view instanceof TextView) {
((TextView) view).setTextSize(19);
((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.home_tab_selected));
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
View view = tab.getCustomView();
if (null != view && view instanceof TextView) {
((TextView) view).setTextSize(14);
((TextView) view).setTextColor(ContextCompat.getColor(mContext, R.color.home_tab_noselected));
}
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});