当前位置: 首页 > 工具软件 > ViewPager > 使用案例 >

ViewPager (二)

闽朝
2023-12-01

ViewPager (二)

页卡标题是ViewPager重要部件, 前面我们提到的android自带的控件,PagerTabStrip或PagerTitleStrip
除此外,要自定义一些更美观的页卡标题还可以选择ViewPagerIndicator

https://github.com/JakeWharton/ViewPagerIndicator

下载下来后源码是以lib方式工作, 需要我们新建一个空的lib项目, 然后把源码拷贝到新建的项目

源码里面有个example目录, 是用法例子, 不能直接导入, 同样需要新建项目, 并拷贝源码, 注意把manifest, 还有资源文件都要拷贝过来,并添加依赖前面的lib项目… 才能正常运行.里面有很多的例子, 提供不同样式的Indicator

比如帮以前的viewpager基础里例子代码, 加入ViewPagerIndicator, 步骤:

1 新建项目, 设置为lib项目, 并copy源码到该lib

2 设置viewpager项目依赖刚才新建的lib项目 , 并copy 必须的资源文件: res 目录下的drawable目录里图片资源, values目录下的styles.xml

3 初始化标题列表或数组, 传递给FragmentPagerAdapter, 并实现getPageTitle (这个和使用自带的PagerTabStrip 是一样的)
这里的mTitles是传递过来的标题String数组

    @Override
    public CharSequence getPageTitle(int position) {
//       return mTitles[position % mTitles.length].toUpperCase();  
//       return mTitles[position];  
         return mTitles[position % mTitles.length];
    }

4 修改布局文件

    <android.support.v4.view.ViewPager
        android:id="@+id/id_pager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <com.viewpagerindicator.TitlePageIndicator
        android:id="@+id/indicator"
        android:padding="10dip"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"
        android:background="#18FF0000"
        android:textColor="#AA000000"
        app:footerColor="#FFAA2222"
        app:footerLineHeight="1dp"
        app:footerIndicatorHeight="3dp"
        app:footerIndicatorStyle="underline"
        app:selectedColor="#FF000000"
        app:selectedBold="true"
        />

5 Activity 中:

        MyFragmentPagerAdapter3 fragmentAdapter3 = new MyFragmentPagerAdapter3(
                getSupportFragmentManager(), fragList, titles);
        pager.setAdapter(fragmentAdapter3);
        // pager.setOnPageChangeListener(this);

        // 测试indicator
        // CirclePageIndicator indicator = (CirclePageIndicator)
        // findViewById(R.id.id_titles);
        // CirclePageIndicator indicator = (CirclePageIndicator)
        // findViewById(R.id.id_line_indicator);
        // LinePageIndicator indicator = (LinePageIndicator)
        // findViewById(R.id.id_line_indicator);
        // indicator.setViewPager(pager);

        TitlePageIndicator mIndicator = (TitlePageIndicator) findViewById(R.id.indicator);
        mIndicator.setViewPager(pager);
        mIndicator.setOnPageChangeListener(this);

6 如果原来的pager使用了监听器的话, 应该把监听器绑定到indicator , 而不再是pager绑定监听器
(Optional) If you use an OnPageChangeListener with your view pager
you should set it in the indicator rather than on the pager directly.

     //continued from above
     titleIndicator.setOnPageChangeListener(mPageChangeListener);

看起来需要6个步骤, 但是如果没有标题文字, 只是页面切换圆点的话, 最简单的情况只需要两步就可以了, 具体的查看sample里面的例子

 类似资料: