android MagicIndicator管理下划线颜色,高度;设置标题是否居中;MagicIndicator更新选中状态

更新选中状态:

          commonNavigatorAdapter.notifyDataSetChanged();
          indicator.onPageSelected(position);

//        commonNavigator.setAdjustMode(true);是否设置居中,居中之后,titles很长,就无法展开了


    private void initIndicator() {
        String[] titles = getResources().getStringArray(R.array.url_titles);
        CommonNavigator commonNavigator = new CommonNavigator(mContext);
        commonNavigator.setAdjustMode(true);
        CommonNavigatorAdapter commonNavigatorAdapter = new CommonNavigatorAdapter() {

            @Override
            public int getCount() {
                return titles.length;
            }

            @Override
            public IPagerTitleView getTitleView(Context context, final int index) {

                ColorTransitionPagerImageTitleView colorTransitionPagerTitleView = new ColorTransitionPagerImageTitleView(context);


                colorTransitionPagerTitleView.setNormalColor(getResources().getColor(R.color.color_grey_text8));
                colorTransitionPagerTitleView.setSelectedColor(getResources().getColor(R.color.blue_1));
                colorTransitionPagerTitleView.setText(titles[index]);

                colorTransitionPagerTitleView.getPaint().setFakeBoldText(true);


                colorTransitionPagerTitleView.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View view) {
                        if (index != viewPager.getCurrentItem()) {
                            viewPager.setCurrentItem(index, false);
                        }
                    }
                });
                return colorTransitionPagerTitleView;
            }

            @Override
            public IPagerIndicator getIndicator(Context context) {

                LinePagerIndicator linePagerIndicator = new LinePagerIndicator(context);
                linePagerIndicator.setMode(LinePagerIndicator.MODE_MATCH_EDGE);
//高度            
    linePagerIndicator.setLineHeight(2);

//颜色                
linePagerIndicator.setColors(getResources().getColor(R.color.blue_1));
                return linePagerIndicator;
            }

        };
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
//                StatusBarUtil.transparencyBar(mActivity);
//                DLog.d(TAG, "StatusBarUtil: type=" + type);
//                if (position == 2) {
//                    setBannerColor(mContext.getResources().getColor(R.color.me_banner_color));
//                    setNavigationBarColor(mContext.getResources().getColor(R.color.white));
//                } else {
//                    StatusBarUtil.StatusBarLightMode(mActivity, type);
//                    setBannerColor(mContext.getResources().getColor(R.color.main_banner_bg_color));
//                    setNavigationBarColor(mContext.getResources().getColor(R.color.white));
//                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
        commonNavigator.setAdapter(commonNavigatorAdapter);
        indicator.setNavigator(commonNavigator);
        ViewPagerHelper.bind(indicator, viewPager);
    }

这里的getview()也可以是:

   @Override
            public IPagerTitleView getTitleView(Context context, final int index) {

                ColorTransitionPagerImageTitleView view = new ColorTransitionPagerImageTitleView(context);
                view.setNormalColor(getResources().getColor(R.color.secondary_textcolor));
                view.setSelectedColor(getResources().getColor(R.color.zz_color_yellow));

                view.setText(titles.get(index));
                view.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
                view.getPaint().setFakeBoldText(true);
                view.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        if (index != viewPager.getCurrentItem()) {
                            viewPager.setCurrentItem(index, false);
                        }
                    }
                });
                return view;
            }

ColorTransitionPagerImageTitleView:
package com.zc.shortvideo.helper.view;

import android.content.Context;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;

import com.zz.utils.DPUtils;

import net.lucode.hackware.magicindicator.buildins.ArgbEvaluatorHolder;
import net.lucode.hackware.magicindicator.buildins.commonnavigator.titles.SimplePagerTitleView;


/**
 * 自定义带图片的标题,适配指示器宽度
 */
public class ColorTransitionPagerImageTitleView extends SimplePagerTitleView {

    public ColorTransitionPagerImageTitleView(Context context) {
        super(context);
    }

    @Override
    public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
        int color = ArgbEvaluatorHolder.eval(leavePercent, mSelectedColor, mNormalColor);
        setTextColor(color);
    }

    @Override
    public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
        int color = ArgbEvaluatorHolder.eval(enterPercent, mNormalColor, mSelectedColor);
        setTextColor(color);
    }

    @Override
    public void onSelected(int index, int totalCount) {
    }

    @Override
    public void onDeselected(int index, int totalCount) {
    }

    @Override
    public int getContentLeft() {
        Drawable[] drawables = getCompoundDrawables();
        if (drawables.length > 3 && (drawables[2] != null || drawables[0] != null)) {
            Rect bound = new Rect();
            getPaint().getTextBounds(getText().toString(), 0, getText().length(), bound);
            int contentWidth = bound.width();
            contentWidth += DPUtils.dip2px(getContext(), 24);
            return getLeft() + getWidth() / 2 - contentWidth / 2;
        } else {
            return super.getContentLeft();
        }

    }

    @Override
    public int getContentTop() {
        return super.getContentTop();
    }

    @Override
    public int getContentRight() {
        Drawable[] drawables = getCompoundDrawables();
        if (drawables.length > 3 && (drawables[2] != null || drawables[0] != null)) {
            Rect bound = new Rect();
            getPaint().getTextBounds(getText().toString(), 0, getText().length(), bound);
            int contentWidth = bound.width();
            contentWidth += DPUtils.dip2px(getContext(), 24);
            return this.getLeft() + this.getWidth() / 2 + contentWidth / 2;
        } else {
            return super.getContentRight();
        }

    }

    @Override
    public int getContentBottom() {
        return super.getContentBottom();
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jian11058

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值