ViewPager简介和简单使用

ViewPager

ViewPager是实现滑动效果的控件
可以添加多个Fragment
用FragmentViewPagerAdapter适配器适配用来添加Fragment和TabLayout

Fragment

fragment请连接https://blog.youkuaiyun.com/SageDeceiveFiend/article/details/90414311

TabLayout

用来显示上方选项卡效果的控件需要先导依赖
implementation ‘com.android.support:design:28.0.0’

案例展示

在这里插入图片描述

在这里插入图片描述

public class Onew extends Fragment {


    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View inflate = inflater.inflate(R.layout.simsim0, container, false);

        ViewPager viewById = inflate.findViewById(R.id.vp5);
        TabLayout tb = inflate.findViewById(R.id.tb);
        ArrayList<Fragment> fragments = new ArrayList<>();
        OneOnew oneOnew=new OneOnew();

        One one = new One();
        Tow tow = new Tow();
        Tow tow1 = new Tow();
        fragments.add(oneOnew);
        fragments.add(one);

        fragments.add(tow);
        fragments.add(tow1);
        ArrayList<String> titles = new ArrayList<>();
        titles.add("推荐");
        titles.add("手机");
        titles.add("智能");
        titles.add("电视5周年");
        titles.add("笔记本");
        //解决Fragment中嵌套ViewPager,切换Fragment之后ViewPager不显示的问题
        Fr1 fr = new Fr1(this.getChildFragmentManager(), fragments,titles);
        viewById.setAdapter(fr);
        tb.setupWithViewPager(viewById);
        return inflate;
    }
}

//适配器
public class Fr1 extends FragmentPagerAdapter {


   ArrayList<Fragment> fragments;
   ArrayList<String> titles;

    public Fr1(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);
    }
}

//布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">


    <android.support.design.widget.TabLayout
        android:id="@+id/tb"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
    </android.support.design.widget.TabLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/vp5"
        android:layout_below="@id/tb"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.v4.view.ViewPager>
</RelativeLayout>

//主activity代码
public class Main4Activity extends AppCompatActivity {
    RadioButton r1;
    RadioButton r2;
    RadioButton r3;
    RadioButton r4;
    RadioButton r5;
    TabLayout tb;
    ViewPager vp;
    Frr frr;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main4);
        r1 = findViewById(R.id.r1);
        r2 = findViewById(R.id.r2);
        r3 = findViewById(R.id.r3);
        r4 = findViewById(R.id.r4);
        r5 = findViewById(R.id.r5);
        tb = findViewById(R.id.tb);
        vp = findViewById(R.id.vp);
        ArrayList<Fragment> fragments = new ArrayList<>();
        Onew onew=new Onew();
        Tow tow=new Tow();
        One one=new One();
        Tow tow1=new Tow();
        One one1=new One();

        fragments.add(onew);
        fragments.add(tow);
        fragments.add(one);
        fragments.add(tow1);
        fragments.add(one1);
        frr = new Frr(getSupportFragmentManager(), fragments);

        vp.setAdapter(frr);

        r1.setChecked(true);
        r1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vp.setCurrentItem(0);
            }
        });
        r2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vp.setCurrentItem(1);

            }
        });
        r3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vp.setCurrentItem(2);

            }
        });
        r4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vp.setCurrentItem(3);

            }
        });
        r5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vp.setCurrentItem(4);

            }
        });
        vp.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 if (i == 4){
                    r5.setChecked(true);

                }
         frr.notifyDataSetChanged();

            }

            @Override
            public void onPageScrollStateChanged(int i) {
                frr.notifyDataSetChanged();
            }
        });
    }

//主布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Day13.Main4Activity">


    <android.support.v4.view.ViewPager
        android:id="@+id/vp"
        android:layout_above="@id/rg"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v4.view.ViewPager>

    <RadioGroup
        android:id="@+id/rg"
        android:gravity="center"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <RadioButton
            android:layout_weight="1"
            android:id="@+id/r1"
            android:button="@null"
            android:background="@drawable/simsim"
            android:layout_width="40dp"
            android:layout_height="60dp" />
        <RadioButton
            android:layout_weight="1"
            android:id="@+id/r2"
            android:button="@null"
            android:background="@drawable/simsim"
            android:layout_width="40dp"
            android:layout_height="60dp" />
        <RadioButton
            android:layout_weight="1"
            android:id="@+id/r3"
            android:button="@null"
            android:background="@drawable/simsim"
            android:layout_width="40dp"
            android:layout_height="60dp" />
        <RadioButton
            android:layout_weight="1"
            android:id="@+id/r4"
            android:button="@null"
            android:background="@drawable/simsim"
            android:layout_width="40dp"
            android:layout_height="60dp" />
        <RadioButton
            android:layout_weight="1"
            android:id="@+id/r5"
            android:button="@null"
            android:background="@drawable/simsim"
            android:layout_width="40dp"
            android:layout_height="60dp" />
    </RadioGroup>
</RelativeLayout>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值