ViewPager+Fragment+TabLayout

ViewPager+Fragment+TabLayout

代码实例

效果图

在这里插入图片描述
1.容器:ViewPager

2.数据:ArrayList<Fragment ArrayList标题

3.适配器:FragmentViewPager
重写的方法:

(1)getCount():返回数据源的总数量

(2)getItem():

(3)getPageTitle():返回标题

4.TabLayout:需要导入依赖
implementation ‘com.android.support:design:28.0.0’

布局文件

// An highlighted block
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >
    
    <RelativeLayout
        android:layout_weight="1"
        android:layout_width="match_parent"
        android:layout_height="0dp">
        <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
            android:id="@+id/ll"
            android:gravity="center_horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:layout_marginBottom="30dp"
            android:orientation="horizontal"
            >
            <ImageView
                android:id="@+id/image1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/shixinxiaoyuandian"
                />

            <ImageView
                android:id="@+id/image2"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/xiaobaidian"
                />

            <ImageView
                android:id="@+id/image3"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@mipmap/xiaobaidian"
                />

        </LinearLayout>
    </RelativeLayout>
    


    <LinearLayout
        android:layout_weight="2"
        android:layout_width="match_parent"
        android:layout_height="0dp">
        <LinearLayout
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:background="@drawable/_103"
            ></LinearLayout>

        <LinearLayout
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:orientation="vertical"
            >

            <LinearLayout
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:background="@drawable/xiaolian"
                ></LinearLayout>

            <LinearLayout
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="0dp"
                android:background="@drawable/_102"
                ></LinearLayout>

        </LinearLayout>
    </LinearLayout>

</LinearLayout>

java代码
1.主类

// An highlighted block
public class Main2Activity extends AppCompatActivity {
    ViewPager viewPager;
    RadioGroup radioGroup;
    RadioButton r1,r2,r3,r4,r5;
    ArrayList<Fragment> fragments = new ArrayList<>();
    MyAdapter myAdapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main2);

        viewPager = findViewById(R.id.viewP);
        radioGroup = findViewById(R.id.rg);
        r1 = findViewById(R.id.button1);
        r2 = findViewById(R.id.button2);
        r3 = findViewById(R.id.button3);
        r4 = findViewById(R.id.button4);
        r5 = findViewById(R.id.button5);

        MyFragment4 myFragment4 = new MyFragment4();
        MyFragment6 myFragment6 = new MyFragment6();
        MyFragment7 myFragment7 = new MyFragment7();
        MyFragment8 myFragment8 = new MyFragment8();
        MyFragment9 myFragment9 = new MyFragment9();

        fragments.add(myFragment4);
        fragments.add(myFragment6);
        fragments.add(myFragment7);
        fragments.add(myFragment8);
        fragments.add(myFragment9);

        myAdapter = new MyAdapter(getSupportFragmentManager(),fragments);

        viewPager.setAdapter(myAdapter);

        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                if (checkedId == r1.getId()){
                    viewPager.setCurrentItem(0);
                }else if (checkedId == r2.getId()){
                    viewPager.setCurrentItem(1);
                }else if (checkedId == r3.getId()){
                    viewPager.setCurrentItem(2);
                }else if (checkedId == r4.getId()){
                    viewPager.setCurrentItem(3);
                }else{
                    viewPager.setCurrentItem(4);
                }
            }
        });

        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                if (i==0){
                    r1.setChecked(true);
                }else if(i== 1){
                    r2.setChecked(true);
                }else if (i == 2){
                    r3.setChecked(true);
                }else if (i == 3){
                    r4.setChecked(true);
                }else {
                    r5.setChecked(true);
                }
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });



    }
}

  1. ViewPager+TabLayout
// An highlighted block
public class MyFragment4 extends Fragment {
    TabLayout tabLayout;
    ViewPager viewPager;
    ArrayList<String> strs = new ArrayList<>();
    ArrayList<Fragment> fragments = new ArrayList<>();
    MyAdapter2 myAdapter2;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.layout_myfragment4,container,false);

        tabLayout = view.findViewById(R.id.tb);
        viewPager = view.findViewById(R.id.vp);

        strs.clear();
        fragments.clear();

        strs.add("推荐");
        strs.add("手机");
        strs.add("智能");
        strs.add("电视5周年");
        strs.add("笔记本");

        MyFragment5 myFragment5 = new MyFragment5();
        Fragment1 fragment1 = new Fragment1();
        Fragment2 fragment2 = new Fragment2();
        Fragment3 fragment3 = new Fragment3();
        Fragment4 fragment4 = new Fragment4();
        fragments.add(myFragment5);
        fragments.add(fragment1);
        fragments.add(fragment2);
        fragments.add(fragment3);
        fragments.add(fragment4);

        myAdapter2 = new MyAdapter2(getFragmentManager(),strs,fragments);
        viewPager.setAdapter(myAdapter2);
        tabLayout.setupWithViewPager(viewPager);

        return view;
    }
}

3.适配器

// An highlighted block
public class MyAdapter2 extends FragmentPagerAdapter {

    ArrayList<String> strList ;
    ArrayList<Fragment> fragments ;

    public MyAdapter2(FragmentManager fm,ArrayList<String> strs,ArrayList<Fragment> fragments) {
        super(fm);
        this.strList = strs;
        this.fragments = fragments;
    }

    @Override
    public Fragment getItem(int i) {
        return fragments.get(i);
    }

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

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return strList.get(position);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值