176_ViewPagerFragment基类抽取


ViewPagerFragment基类抽取

ViewPager现在都是配合Fragment使用

然后这些Fragment别说一样不一样

反正肯定是要抽基类的

 

抽基类便于管理,便于,反正各种好处

 

废话不多说,直接开始

 

我们来个TestApp

 

我们来个ViewPagerFragment继承Fragment

 

 

我们以前如果想把这个Fragment放到Activity里面

 

总是这样做

就是来个FrameLayout作为容器

然后

getSupportFragmentManager()

                .beginTransaction()

                .add(new ViewPagerFragment(), R.id.fl_content)

                .commitAllowingStateLoss();

 

 

 

如果我们就这么一个Fragment,

其实不用这么麻烦

我们可以直接在xml布局文件中这样做

 

<fragment

        android:layout_width="match_parent"

        android:id="@+id/fg_main_content"

        android:name="com.lichenhao.viewpagerfragmenttest.ViewPagerFragment"

        android:layout_height="match_parent"/>

 

这里要注意

一定要给id或者tag

然后给个name,就是为了标识是ViewPagerFragment

 

 

 

 

 

现在我们配置一下fragment

 

 

 

我们用一个开源项目PagerSliding

这个其实也是实现了标签和ViewPager的结合

我们之前一直用design包里面的TabLayout

确实很方便

 

但是有缺陷

就是我们要修改起来其实很麻烦

 

如果我们用开源项目的话

理解了之后修改源码就比较简单了

我们可以修改成我们自己想要的

 

 

 

fragment布局

 

    <com.astuetz.PagerSlidingTabStrip

        android:layout_width="match_parent"

        android:id="@+id/psts_fragment_main_tab"

        android:layout_height="48dp"/>

 

    <android.support.v4.view.ViewPager

        android:layout_width="match_parent"

        android:id="@+id/vp_fragment_main_content"

        android:layout_height="match_parent"/>

 

 

 

 

我们经常在onCreateView方法里面初始化

但是我喜欢直接把view返回出去

 

然后我再在onViewCreated方法里面去初始化

都是一样的

这样的话看上去更舒服

 

    @Nullable

    @Override

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        return View.inflate(getContext(), R.layout.fragment_main_content, null);

    }

 

    @Override

    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {

        mPsts_tab = (PagerSlidingTabStrip) view.findViewById(R.id.psts_fragment_main_tab);

        mVp_content = (ViewPager) view.findViewById(R.id.vp_fragment_main_content);

    }

 

 

 

 

 

然后我们来个适配器

专门给FragmentViewPager用的

    class PagerFragmentAdapter extends FragmentStatePagerAdapter {

 

        List<Fragment> mFragments = new ArrayList<>();

 

        public PagerFragmentAdapter(FragmentManager fm) {

            super(fm);

        }

 

        @Override

        public Fragment getItem(int position) {

            return mFragments.get(position);

        }

 

        @Override

        public int getCount() {

            return mFragments.size();

        }

    }

 

 

然后我们把他们关联起来

 

1.创建适配器

 

        PagerFragmentAdapter adapter = new PagerFragmentAdapter(getChildFragmentManager());

 

 

2.设置适配器

 

        mVp_content.setAdapter(adapter);

 

 

3.tabviewpager关联起来

 

        mPsts_tab.setViewPager(mVp_content);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值