package com.bob.digcsdn.utils.helpers; import android.content.Context; import android.graphics.Color; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; import com.astuetz.PagerSlidingTabStrip; import com.bob.digcsdn.R; import java.util.ArrayList; /** * the improvement class for PagerSlidingTabStrip * 使用mTabs数组来临时存储Tabs,以此来更新里边每一个tab的状态 * @author Bob */ public class PagerSlidingTabStripEx extends PagerSlidingTabStrip { private Context mContext; private ViewGroup mTabsContainer; private ArrayList<Object> mTabs = new ArrayList<>(); private int mSelectedColor; private int mUnSelectedColor; private float mSelectedAlpha = 1.0f;//小于1表示百分比,大于1表示具体的十六进制值 private float mUnSelectedAlpha = 0.3f; public PagerSlidingTabStripEx(Context context) { this(context, null); } public PagerSlidingTabStripEx(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PagerSlidingTabStripEx(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); mContext = context; } /** *初始化viewPager,mTabs数组 * @param pager */ @Override public void setViewPager(final ViewPager pager) { super.setViewPager(pager); mTabs.clear(); mTabsContainer = (ViewGroup) getChildAt(0); for (int i = 0; i < mTabsContainer.getChildCount(); i++) { mTabs.add(mTabsContainer.getChildAt(i)); } } /** * 同步修改tab里的字体颜色 * 适合于tab里仅由默认的文字组成 * @param selectedPosition */ public void correctColor(int selectedPosition) { for (int i = 0; i < mTabs.size(); i++) { ((TextView) mTabs.get(i)).setTextColor(mUnSelectedColor); } ((TextView) mTabs.get(selectedPosition)).setTextColor(mSelectedColor); } /** * 通过透明度,来改变tab里图片的选中状态 * 适合于带有图片和红点的viewGroup * @param selectedPosition */ public void correctAlpha(int selectedPosition) { for (int i = 0; i < mTabs.size(); i++) {//先全部做成未选中,然后再做选中 ((ViewGroup) mTabs.get(i)).getChildAt(0).setAlpha(mUnSelectedAlpha); } ((ViewGroup) mTabs.get(selectedPosition)).getChildAt(0).setAlpha(mSelectedAlpha); ((ViewGroup) mTabs.get(selectedPosition)).getChildAt(1).setVisibility(View.GONE); } /** * 选中的字体颜色,这里支持Resource资源,也支持字符型的十六进制值 * @param colorRes */ public void setSelectedColor(int colorRes) { mSelectedColor = mContext.getResources().getColor(colorRes); } /** * 选中的字体颜色,这里支持Resource资源,也支持字符型的十六进制值 * @param color */ public void setSelectedColor(String color) { mSelectedColor = Color.parseColor(color); } /** * 未选中的字体颜色,这里支持Resource资源,也支持字符型的十六进制值 * @param colorRes */ public void setUnSelectedColor(int colorRes) { mUnSelectedColor = mContext.getResources().getColor(colorRes); } /** * 未选中的字体颜色,这里支持Resource资源,也支持字符型的十六进制值 * @param color */ public void setUnSelectedColor(String color) { mUnSelectedColor = Color.parseColor(color); } }