ViewPager+Fragment+选项卡

ViewPager

这是在手机上最常见的一种控件,几乎每款手机软件都会应用,ViewPager+Fragment的使用可以实现更加美观的界面和效果。

在这里插入图片描述
在这里插入图片描述

java代码:

主类:

package com.example.day13;

import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.CompoundButton;
import android.widget.RadioButton;

import java.util.ArrayList;

public class day13 extends AppCompatActivity {
    ViewPager vp;
    RadioButton first;
    RadioButton second;
    TabLayout tl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_day13);

        vp = findViewById(R.id.vp);
        first = findViewById(R.id.first);
        second = findViewById(R.id.second);
        tl = findViewById(R.id.tb);

        first.setChecked(true);
        ArrayList<Fragment> list = new ArrayList<>();
        ArrayList<String> titles = new ArrayList<>();
        One one = new One();
        Two two = new Two();

        list.add(one);
        list.add(two);
        titles.add("选项卡1");
        titles.add("选项卡2");
        vp.setAdapter(new MyAdapter(getSupportFragmentManager(),list,titles));
        tl.setupWithViewPager(vp);

        first.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked){
                    vp.setCurrentItem(0);
                }
            }
        });

        second.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if(isChecked){
                    vp.setCurrentItem(1);
                }
            }
        });

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

            }

            @Override
            public void onPageSelected(int i) {
                switch(i){
                    case 0:
                        first.setChecked(true);
                        break;
                    case 1:
                        second = findViewById(R.id.second);
                        second.setChecked(true);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });

    }
}

适配器代码:

package com.example.day13;


import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;

import java.util.ArrayList;

public class MyAdapter extends FragmentPagerAdapter {

    ArrayList<Fragment> fragments;
    ArrayList<String> titles;
    public MyAdapter(FragmentManager fm, ArrayList<Fragment> fragments,ArrayList<String> titles) {
        super(fm);
        this.fragments = fragments;
        this.titles = titles;
    }

    @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 titles.get(position);
    }
}

Fragment类代码:

package com.example.day13;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class One extends Fragment {
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.layout_one,container,false);
    }
}

效果图:
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_44946212/article/details/90453171