不关联ViewPager的指示器Tab【第二篇】
2019-07-23 本文已影响0人
Small_Cake
1.使用MagicIndicator写工具类
//菜单指示器创建工具类
public class TabCreateUtils {
/**
* 类型:不关联ViewPager
* 字:选中橘色,未选中黑色,加粗
* 指示器:指示器长度和文字长度相同,橘色
*/
public interface onTitleClickListener{
void onTitleClick(int index);
}
public static void setOrangeTab(Context context,MagicIndicator magicIndicator, String[] tabNames ,onTitleClickListener listener) {
FragmentContainerHelper mFragmentContainerHelper = new FragmentContainerHelper();
CommonNavigator commonNavigator = new CommonNavigator(context);
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
@Override
public int getCount() {
return tabNames == null ? 0 : tabNames.length;
}
@Override
public IPagerTitleView getTitleView(Context context, final int index) {
ColorTransitionPagerTitleView colorTransitionPagerTitleView = new ColorTransitionPagerTitleView(context);
colorTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context, R.color.text_black));
colorTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(context, R.color.tab_orange));
colorTransitionPagerTitleView.setTextSize(16);
colorTransitionPagerTitleView.setText(tabNames[index]);
colorTransitionPagerTitleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mFragmentContainerHelper.handlePageSelected(index);
if (listener!=null)listener.onTitleClick(index);
}
});
return colorTransitionPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
LinePagerIndicator indicator = new LinePagerIndicator(context);
indicator.setMode(LinePagerIndicator.MODE_WRAP_CONTENT);
indicator.setColors(ContextCompat.getColor(context, R.color.tab_orange));
indicator.setRoundRadius(3);
return indicator;
}
});
commonNavigator.setAdjustMode(true);
magicIndicator.setNavigator(commonNavigator);
mFragmentContainerHelper.attachMagicIndicator(magicIndicator);
}
}
2.使用
TabCreateUtils.setOrangeTab(this.getContext(), magicIndicator, names, index -> ToastUtil.showShort(names[index]));
最后的效果如下:

有的时候我们还需要让选中的字体变大