PagerSlidingTabStrip基于HorizontalScrollView实现ViewPager的tab指示栏?效果,闲话不多说,直接看效果。
AndroidCodeTools (持续更新...)
GitHub:https://github.com/Pgrammerybj/AndroidCodeTools
- 支持自定义Tab栏的颜色、高度、点击以及条目个数
- 支持条目文字的大小、颜色设置
- 支持文字底部横向指示条的颜色、高度以及间距
- 如需更多功能,请联系我咯
具体调用:
//真正的实现一行调用,让广大开发者朋友能够happy的做需求。(具体的配置方式可参考库中的demo)
PagerSlidingTabStrip pagerTitle = (PagerSlidingTabStrip) findViewById(R.id.topic_viewpager_title);
ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager_fragment);
FragmentOne oneF = new FragmentOne();
FragmentTwo twoF = new FragmentTwo();
FragmentManager fragmentTransaction = getSupportFragmentManager();
FragmentViewPagerAdapter pagerAdapter = new FragmentViewPagerAdapter(fragmentTransaction);
pagerAdapter.add(oneF, getString(R.string.viewpager_one_text));
pagerAdapter.add(twoF, getString(R.string.viewpager_two_text));
viewPager.setAdapter(pagerAdapter);
//将目标viewPager添加到指示器中
pagerTitle.setViewPager(viewPager);
Xml 布局:
<com.jackyang.codetools.PagerSlidingTabStrip
android:id="@+id/topic_viewpager_title"
android:layout_width="match_parent"
android:layout_height="45dp"
android:layout_gravity="top"
android:background="#ffffffff"
app:pstsDefTextColor="@color/w2"
app:pstsDividerColor="#00000000"
app:pstsDividerPadding="0dp"
app:pstsDividerWidth="0dp"
app:pstsIndicatorColor="@color/w1"
app:pstsIndicatorPaddingLeftRight="60dp"
app:pstsIndicatorHeight="2dp"
app:pstsSelTextColor="@color/w1"
app:pstsShouldExpand="true"
app:pstsTabTextSize="@dimen/s2"
app:pstsUnderlineColor="@color/w1"
app:pstsUnderlineHeight="0dp"/>
FragmentViewPagerAdapter的源码:
private static class FragmentViewPagerAdapter extends android.support.v4.app.FragmentPagerAdapter {
private List<Fragment> mFragmentList = new ArrayList<>();
private List<CharSequence> mTitleList = new ArrayList<>();
FragmentViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public int getCount() {
return mFragmentList.size();
}
@Override
public Fragment getItem(int position) {
return getCount() > position ? mFragmentList.get(position) : null;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
@Override
public CharSequence getPageTitle(int position) {
return mTitleList.get(position);
}
void add(Fragment fragment, CharSequence title) {
mFragmentList.add(fragment);
mTitleList.add(title);
}
}
后话:
我所想要的就是简洁简单,能让用户上手就能使用不至于其他繁杂的设置来影 响大家的开发进度。PagerSlidingTabStrip目前已经在公司项目中使用(日活3W左右),目前所包含的功能还是比较简单的,还望大家对该控件有什么建议或者意见,大家共同进步。
更多项目:
- 自定义动画请移步至 AnimationUtils
- 欢迎关注廖子尧(jeasonlzy)的开源项目okhttp-OkGo