一行代码调用Android自定义ViewPager指示器

来源:互联网 发布:如何查看tcp端口 编辑:程序博客网 时间:2024/05/17 01:25

PagerSlidingTabStrip基于HorizontalScrollView实现ViewPager的tab指示栏?效果,闲话不多说,直接看效果。

AndroidCodeTools (持续更新…)

GitHub:https://github.com/Pgrammerybj/AndroidCodeTools

Fragment_02
Fragment_03

* 支持自定义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