4.8.3 ViewPager 和TabLayout 进行联动
首先在布局里面是一个LinearLayout,然后是TabLayout ,记着这个TabLayout 必须要是全部的路径,然后是ViewPager的
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.TabLayout android:id="@+id/manhua_viewpager_tablayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@mipmap/titlebar_bg" app:tabTextColor="#66FFFFFF" app:tabSelectedTextColor="#66FF0000" > </android.support.design.widget.TabLayout> <android.support.v4.view.ViewPager android:id="@+id/manhua_viewpager" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v4.view.ViewPager> </LinearLayout>
然后创建一个ViewPager的FragmentPagerAdapter,在这里面的Fragment 一定要是v4包的,而且要有一个fragment 的列表;
public class ComicViewPagerAdapter extends FragmentPagerAdapter { ArrayList<Fragment> fragments; public ComicViewPagerAdapter(FragmentManager fm,ArrayList<Fragment> fragments) { super(fm); this.fragments=fragments; } @Override public Fragment getItem(int position) { return fragments.get(position); } @Override public int getCount() { return fragments.size(); } @Override public CharSequence getPageTitle(int position) { // return super.getPageTitle(position); String ret = null; switch (position){ case 0: ret="精品"; break; case 1: ret="更新"; break; case 2: ret="排行"; break; case 3: ret="分类"; break; } return ret; } }
然后在 Fragment 里面实现ViewPager 和TabLayout 进行联动;注意这里面如果不用ret 去findViewById而是用getActivity的话就会报空指针。
public class ComicFragment extends Fragment { private ViewPager mComicViewPager; Context context; public ComicFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View ret =inflater.inflate(R.layout.fragment_comic, container, false); // Inflate the layout for this fragment TabLayout tabLayout = (TabLayout)ret.findViewById(R.id.comic_tablayout); mComicViewPager = (ViewPager)ret.findViewById(R.id.comic_viewPager); ArrayList<Fragment> fragments = new ArrayList<Fragment>(); fragments.add(new CategoryFragment()); fragments.add(new CategoryFragment()); fragments.add(new CategoryFragment()); fragments.add(new CategoryFragment()); ComicViewPagerAdapter adapter = new ComicViewPagerAdapter(getChildFragmentManager(),fragments); mComicViewPager.setAdapter(adapter); tabLayout.setupWithViewPager(mComicViewPager); // 防止ViewPager销毁不在屏幕内部的应用 mComicViewPager.setOffscreenPageLimit(5); return ret; } }