Fragment+ViewPager+HorizontalScrollView
简单的分类导航页实现
效果图:
下面的是自定义的View
public class TabPageIndicator extends HorizontalScrollView implements ViewPager.OnPageChangeListener {
/**
* attrs
*/
private int mTabPaddingLeft=16;
private int mTabPaddingRight=16;
private int mTextColor= Color.BLACK;
private int mSelectTextColor=Color.RED;
private int mTextSize=10;
private int mCurrentPosition;
private int mSelectPosition;
private int mTabCount;
private float mOffset;
private Paint mSelectLinePaint;
private int mLineColor=Color.RED;
private int mLineHeight=4;
/**
* Horizontal LinearLayout;
*/
private LinearLayout mLinearLayout;
private ViewPager mPager;
private ViewPager.OnPageChangeListener mListener;
public TabPageIndicator(Context context) {
this(context,null);
}
public TabPageIndicator(Context context, AttributeSet attrs) {
this(context,attrs,0);
}
public TabPageIndicator(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
setFillViewport(true);//子控件不满全屏时,设置ScrollView 全屏
setWillNotDraw(false);//取消重绘的Tag ?
initView(context);
mSelectLinePaint=new Paint();
}
private void initView(Context context) {
mLinearLayout=new LinearLayout(context);
mLinearLayout.setOrientation(LinearLayout.HORIZONTAL);
mLinearLayout.setLayoutParams(new ViewGroup.LayoutParams
(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.MATCH_PARENT));
mLinearLayout.setGravity(Gravity.CENTER_VERTICAL);
addView(mLinearLayout);
}
/**
* Indicator 添加ViewPager 关联
* @param pager
*/
public void setViewPager(ViewPager pager){
this.mPager=pager;
if (mPager!=null)
mPager.setOnPageChangeListener(this);
notifyDataSetChange();
}
private void notif