MagicIndicator使用中遇到的坑...

接上一篇博客 

因为 原生的Tablayout在fragment存在着一些问题

在接入了MagicIndicator后

参考了 上篇 篇尾中提到的大佬的方法

但是遇到了有数据 ,底部指示器显示 但是无文字的问题...

几经调试后 

下面贴出修改后的代码

至于 

/**
 * @作者: yzq
 * @创建日期: 2019/8/24 16:08
 * @文件作用: 创建第三方菜单指示器
 */
public class TabCreateUtils {
    /**
     * 类型:不关联ViewPager
     * 字:选中白色,未选中弱白色,加粗
     * 指示器:指示器长度和文字长度相同,橘色
     */
    public interface onTitleClickListener{
        void onTitleClick(int index);
    }
    public static void setOrangeTab(Context context,MagicIndicator magicIndicator, List 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.size();
            }

            @Override
            public IPagerTitleView getTitleView(Context context, final int index) {
                //自定义
                SelectBigPagerTitleView colorTransitionPagerTitleView = new SelectBigPagerTitleView (context);
                colorTransitionPagerTitleView.setNormalColor(ContextCompat.getColor(context, R.color.qmui_config_color_50_white));
                colorTransitionPagerTitleView.setSelectedColor(ContextCompat.getColor(context, R.color.white));
//                colorTransitionPagerTitleView.setTextSize(16); //自定义 根据需要设置
                colorTransitionPagerTitleView.setText(tabNames.get(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 float getTitleWeight(Context context, int index) {
                return super.getTitleWeight(context, index);
            }

            @Override
            public IPagerIndicator getIndicator(Context context) {
                LinePagerIndicator indicator = new LinePagerIndicator(context);
                indicator.setMode(LinePagerIndicator.MODE_EXACTLY);//MODE_WRAP_CONTENT
                indicator.setLineWidth(32);
                indicator.setColors(ContextCompat.getColor(context, R.color.white));
                indicator.setRoundRadius(3);
                return indicator;
            }
        });
//        commonNavigator.setAdjustMode(true); //todo 就是这里 因为设置了 这个 所以说在数据过多的时候 就全挤在一个屏幕中
        magicIndicator.setNavigator(commonNavigator);
        mFragmentContainerHelper.attachMagicIndicator(magicIndicator);
    }
}

下面这个类 是自定义的 主要用于处理 自定义选中放大文字(可选) 另外 这个是不绑定ViewPager的

需要绑定的 请参考官方文档 或 上篇博客  或 留言....(虽然可能会回的很慢 但是小翊期待你的留言哦)

/**
 * @作者: yzq
 * @创建日期: 2019/8/24 16:35
 * @文件作用: 这是一个可以自定义 字体大小 的自定义类
 */
public class SelectBigPagerTitleView extends ColorTransitionPagerTitleView {
    public SelectBigPagerTitleView(Context context) {
        super(context);
    }
    @Override
    public void onSelected(int index, int totalCount) {
        setTextSize(18);
    }
    @Override
    public void onDeselected(int index, int totalCount) {
        setTextSize(16);
    }
}

有码 无图  那都是耍流氓!!!上效果图

可滑动  

OK , 填坑 完毕 下家....

你可能感兴趣的:(Android)