更新选中状态:
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();
}
}