Viewpager Indicator中PagerSlidngTab用法(与ViewPager一起使用)

PagerSlidngTab用法(与ViewPager一起使用)

一 将PagerSlidingTab.java类考入项目 (将自定义属性以及状态选择器一并拷入否则报错)

二布局中:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">


android:id="@+id/slidingtab"

android:layout_width="match_parent"

android:layout_height="wrap_content"/>


android:id="@+id/viewpager"

android:layout_width="match_parent"

android:layout_height="match_parent">

三代码中:

1      viewpager = (ViewPager) findViewById(R.id.viewpager);//初始化ViewPager

slidingtab = (PagerSlidingTab) findViewById(R.id.slidingtab);//初始化PagerSlidingTab

2 给viewpager设置 adapter

//给viewpager设置Adapter

viewpager.setAdapter(new MainPagerAdapter(getSupportFragmentManager()));

public class MainPagerAdapter extends FragmentPagerAdapter {

private  String[] tabs;//xml中的 标签组合

public MainPagerAdapter(FragmentManager fm) {

super(fm);

tabs = CommonUtil.getStringArray(R.array.tab_names);

}

//根据position返回对应的Fragment

@Override

public Fragment getItem(int position) {

return FragmentFactory.create(position);

}

@Override

public int getCount() {

return tabs.length;

}

/**

* 获取 position对应的 title

*/

@Override

public CharSequence getPageTitle(int position) {

return tabs[position];

}


/**

*根据不同的位置 返回不同的图片

*@paramposition

*@return

*/

/* @Override

public int getPageIconResId(int position) {

return R.mipmap.ic_download;

}*/

}

xml中数组的写法:

首页

应用

游戏

专题

推荐

分类

分类



3    //绑定viewpager和indector

slidingtab.setViewPager(viewpager);

4 PagerSlideTab内部实现及扩展

1.title如何添加的:在setViewPager方法中,获取adapter的count,然后遍历count,在遍历过程中

动态创建TextView,并且将adapter的getPagerTitle方法的返回值设置TextView;

最终将TextView添加到水平的LinearLayout中了;

2.如何跟随ViewPager滚动:在setViewPager方法中,给pager设置OnPageChangeListener,在onPageScroll

方法中去计算需要滚动的位置,最终调用scrollTo方法滚动;

3指示线  位置  以及 圆角  背景颜色 设置(在onDraw方法中)

//绘制 在 下边的线

canvas.drawRect(lineLeft, 0, lineRight, indicatorHeight, rectPaint);

//绘制在上边的线

// canvas.drawRect(lineLeft, 0, lineRight, indicatorHeight, rectPaint);

//绘制在中间的线

// canvas.drawRect(lineLeft,height/2-indicatorHeight/2, lineRight, height/2+indicatorHeight/2, rectPaint);

//绘制滚动的背景

// rectPaint.setColor(Color.parseColor("#66006BCE"));

// canvas.drawRect(lineLeft,0, lineRight, height, rectPaint);

//绘制滚动的圆角背景

// RectF rect = new RectF(lineLeft, 0, lineRight, height);

// canvas.drawRoundRect(rect, 8, 8, rectPaint);

// draw underline

}

4指示器中 图片替换文字的方法

adapter 实现 IconTabProvider  重写方法

public int getPageIconResId(int position) {

return R.mipmap.ic_download;

}

源码中  setViewPager(viewpager)方法 中有判断

if (pager.getAdapter() instanceof IconTabProvider) {

addIconTab(i, ((IconTabProvider) pager.getAdapter()).getPageIconResId(i));

} else {

addTextTab(i, pager.getAdapter().getPageTitle(i).toString());

}

你可能感兴趣的:(Viewpager Indicator中PagerSlidngTab用法(与ViewPager一起使用))