Android自定义ViewPager指示器

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左右),目前所包含的功能还是比较简单的,还望大家对该控件有什么建议或者意见,大家共同进步。

更多项目:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容