欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

PagerTitleStrip使用

程序员文章站 2022-06-09 20:25:59
...

PagerTitleStrip是ViewPager的当前页面,下一页面和前一页面的非交互式指示符。 它旨在用作XML布局中ViewPager小部件的子视图。 将其作为ViewPager的子项添加到布局文件中,并将其android:layout_gravity设置为TOP或BOTTOM,以将其固定到ViewPager的顶部或底部。 每个页面的标题由提供给ViewPager的适配器中的PagerAdapter.getPageTitle(int)方法提供。

使用ViewPager.DecorView注释注释的视图被视为ViewPager“装饰”的一部分。

@ViewPager.DecorView
public class PagerTitleStrip extends ViewGroup {

PagerTitleStrip使用

用法

<android.support.v4.view.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v4.view.PagerTitleStrip
            android:id="@+id/title"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_gravity="top"
            android:background="@color/colorAccent"/>
    </android.support.v4.view.ViewPager>

在Adapter里面重写getPageTitle方法即可。

viewPager.setAdapter(mPagerAdapter = new PagerAdapter() {
            @Override
            public int getCount() {
                return mDataList.size();
            }

            @Nullable
            @Override
            public CharSequence getPageTitle(int position) {
                return mDataList.get(position);
            }

            @Override
            public int getItemPosition(@NonNull Object object) {
                if (object != null && object instanceof View){
                    View view = (View) object;
                    String content = (String) view.getTag();
                    int position = (int) view.getTag(TAG_POSITION_KEY);
                    int b = content == getItem(position) ? POSITION_UNCHANGED : POSITION_NONE;
                    return b;
                }
                return super.getItemPosition(object);
            }

            @Override
            public boolean isViewFromObject(View view, Object object) {
                return view == object;
            }

            public Object getItem(int position){
                if (mDataList == null || mDataList.size() <= position || position < 0) {
                    return null;
                }
                return mDataList.get(position);
            }


            @Override
            public Object instantiateItem(ViewGroup container, int position) {
                View view = mViewCache.size() > 0 ? mViewCache.removeFirst() : null;
                if (view == null) {
                    view = View.inflate(MainActivity.this, R.layout.item_pager, null);
                }
                TextView textView = view.findViewById(R.id.pager_tv);
                textView.setText(mDataList.get(position));
                view.setTag(mDataList.get(position));
                view.setTag(TAG_POSITION_KEY, position);
                container.addView(view);
                return view;
            }

            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                View deleteView = (View) object;
                container.removeView(deleteView);
                mViewCache.add(deleteView);
            }

        });

可以通过ViewPager.LayoutParams.isDecor去判断一个View是不是DecorView。
参考链接

相关标签: ViewPager