利用TabLayout(5.0新技术)+ViewPager+Fragment方法实现书签导航

来源:互联网 发布:深圳善达网络怎么样 编辑:程序博客网 时间:2024/05/17 22:36

“效果展示:
效果:顶部有书签Tablayout,点击书签或滑动Fragment,
通过ViewPager可以切换UI界面。比如网易新闻。
这里写图片描述

实现书签导航思路:Fragment + ViewPager + TabLayout(5.0新技术)   1.有多少个书签,就创建多少个Fragment。   2.初始化数据: 找出Fagment的对象,存进集合。   3.适配数据:创建一个类,继承FragmentPagerAdapter,     把碎片管理器getSupportFragmentManager(),集合lis传送过去。     在布局添加ViewpPager,再把适配到的数据设置到ViewPager中。   4.加依赖包:design.     作用:可以设置书签导航,可让书签和ViewPager相互监听。   5.找到TabLayout的对象,让tablayout和Viewpager绑定.        tabLayout.setupWithViewPager(viewPager);      6.设置书签名称步骤:    a .初始化数据,把标签的名字添加到List集合中,把list传送到适配器中    b .在适配器中重写构造方法,再重写一个 getPageTitle方法,       返回一个String title = titleList.get(position);值。   7.如果多个导航标签,可利用滚动模式 :SCROLLABLE   

代码展示:
1.MainActivity的代码:

public class Fragment_ViewPager_TabLayout extends AppCompatActivity {    private List<Fragment> list;    private ViewPager viewPager;    private TabLayout tabLayout;    private  List<String> titleList;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.fragment_viewpager_tab);        viewPager =         (ViewPager) findViewById(R.id.viewpager2);        tabLayout = (TabLayout) findViewById(R.id.tablayout);        loadData();        BaseFragmentPagerAdapter_TabLayout adapter = new BaseFragmentPagerAdapter_TabLayout(getSupportFragmentManager(),        list,titleList);        viewPager.setAdapter(adapter);        //tablayout和Viewpager绑定在一起      tabLayout.setupWithViewPager(viewPager);        //如果多个导航标签,则利用下面的的滚动模式       tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);    }    private void loadData() {        list = new ArrayList<Fragment>();        Fragment fragmentA = new Fragment_A();        list.add(fragmentA);        Fragment fragmentB = new Fragment_B();        list.add(fragmentB);        Fragment fragmentC = new Fragment_C();        list.add(fragmentC);        Fragment fragmentD = new Fragment_D();        list.add(fragmentD);        //.设置书签名称步骤:        //1.初始化数据,把书签的名称添加到List集合中,把list传送到适配器中        //2.在适配器中重写构造方法,再重写一个 getPageTitle方法,返回一个String title = titleList.get(position);值。        titleList = new ArrayList<>();        titleList.add("应用");        titleList.add("游戏");        titleList.add("主页");        titleList.add("管理");    }}

2.FragmentPagerAdapter的代码:

public class BaseFragmentPagerAdapter_TabLayout extends FragmentPagerAdapter {    private final List<String> titleList;    private List<Fragment> list;    public BaseFragmentPagerAdapter_TabLayout(FragmentManager fm, List<Fragment> list, List<String> titleList) {        super(fm);        this.list=list;        this.titleList = titleList;    }    @Override    public Fragment getItem(int position) {        return list.get(position);    }    @Override    public int getCount() {        return list.size();    }    //这个方法用于添加表名    @Override    public CharSequence getPageTitle(int position) {       String title ="";        if(titleList!=null){            title = titleList.get(position);    }        return title;    }}
0 0