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);
}
然後我們來個擴充卡
專門給Fragment和ViewPager用的
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.把tab和viewpager關聯起來
mPsts_tab.setViewPager(mVp_content);