页签指示器

举报
夜深了 发表于 2018/12/24 18:05:40 2018/12/24
【摘要】 这篇文章主要是viewpager里面嵌套fragment ,同时在头部添加页签指示器..废话不多说,直接上代码~1.首先,创建布局.一个LinearLayout 包裹一个 TabLayout 和 一个viewpager<?xml version="1.0" encoding="utf-8"?><LinearLayout android:id="@+id/activity_main" ...

这篇文章主要是viewpager里面嵌套fragment ,同时在头部添加页签指示器..废话不多说,直接上代码~


1.首先,创建布局.一个LinearLayout 包裹一个 TabLayout 和 一个viewpager

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/activity_main"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.tablayout.MainActivity">

    <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/viewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>

</LinearLayout>

2.利用butterknife找到tablayout和viewpager( ps:butterknife和findViewById一个道理,没用过butterknife,可以使用findViewById)

//使tabLayout 与  viewpager 关联起来
            mTabLayout.setupWithViewPager(mViewPager);

            //设置viewpager 适配器 **这里我们使用的适配器继承的是 FragmentPagerAdapter
            ViewpagerAdapter adapter = new ViewpagerAdapter(getSupportFragmentManager());
            mViewPager.setAdapter(adapter);

           //定义fragment集合
            List<Fragment> fragmentList = new ArrayList<>();
            fragmentList.add(new BlankFragment());
            fragmentList.add(new BlankFragment());
            fragmentList.add(new BlankFragment());
            //往适配器添加参数
            adapter.addFragment(fragmentList);

下面需要注意的是我们使用的适配器继承FragmentPagerAdapter,搭配fragment很好用. 在适配器中重写getPageTitle(),为tabLayout添加标签

class ViewpagerAdapter extends FragmentPagerAdapter{
        //穿建集合,用来盛装fragment
        List<Fragment> mList = new ArrayList<>();

        //自定义方法,用来添加fragment
        public void addFragment( List<Fragment> list){
            this.mList.addAll(list);
            //不要忘记更新适配器哦~
            notifyDataSetChanged();
        }

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

        @Override
        public Fragment getItem(int position) {
            return mList.get(position);
        }

        @Override
        public int getCount() {
            return mList.size();
        }

        String[] tabs = {
                "标签1","标签2","标签3"
        };
        //重写此方法,给tabLayout添加标签
        @Override
        public CharSequence getPageTitle(int position) {
            return tabs[position];
        }
    }
    
    
    最后,使用fragment不要导错包,我们使用的是V4包下 ,使用的fragment管理器也是V4的.


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。