美文网首页
ViewPager+Fragment+TabLayOut

ViewPager+Fragment+TabLayOut

作者: 大灰狼zz | 来源:发表于2018-08-04 14:59 被阅读0次

布局文件中使用TabLayout和ViewPager

<android.support.design.widget.TabLayout
        android:id="@+id/tablayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
<android.support.v4.view.ViewPager
        android:id="@+id/view_pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

新建adapter继承FragmentPagerAdapter

public class MyPageAdapter extends FragmentPagerAdapter {
    ArrayList<Fragment> datas;
    ArrayList<String> titles;

    public CommunityPageAdapter(FragmentManager fm) {
        super(fm);
    }

    public void setData(ArrayList<Fragment> datas) {
        this.datas = datas;
    }

    public void setTitles(ArrayList<String> titles) {
        this.titles = titles;
    }

    @Override
    public Fragment getItem(int position) {
        return datas == null ? null : datas.get(position);
    }

    @Override
    public int getCount() {
        return datas == null ? 0 : datas.size();
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return titles == null ? null : titles.get(position);
    }
}

在需要使用的页面添加如下代码

MyPageAdapter myPageAdapter = new MyPageAdapter(getFragmentManager());

ArrayList<Fragment> datas = new ArrayList<Fragment>();
datas.add(new AFragment());
datas.add(new BFragment());
datas.add(new CFragment());
myPageAdapter.setData(datas);

ArrayList<String> titles = new ArrayList<String>();
titles.add("A");
titles.add("B");
titles.add("C");
myPageAdapter.setTitles(titles);

使ViewPager和TabLayout相关联

TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
// 将适配器设置进ViewPager
 viewPager.setAdapter(myPageAdapter);
// 将ViewPager与TabLayout相关联
 tabLayout.setupWithViewPager(viewPager);

相关文章

网友评论

      本文标题:ViewPager+Fragment+TabLayOut

      本文链接:https://www.haomeiwen.com/subject/ktrmvftx.html