不关联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]));

最后的效果如下:


不关联ViewPager的Tab

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

上一篇 下一篇

猜你喜欢

热点阅读