4.8.3 在 一个 Fragment 里面实现ViewPager 和TabLayout 进行联动

来源:互联网 发布:数据库表怎么设计 编辑:程序博客网 时间:2024/06/05 22:58

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;    }}



0 0
原创粉丝点击