菜单页面(RadioGroup+FragmentPagerAdapter)

//这是所有控件
        mVp = (ViewPager) findViewById(R.id.vp);
        mRb1 = (RadioButton) findViewById(R.id.rb1);
        mRb2 = (RadioButton) findViewById(R.id.rb2);
        mRb3 = (RadioButton) findViewById(R.id.rb3);
        mRb4 = (RadioButton) findViewById(R.id.rb4);
        mRb5 = (RadioButton) findViewById(R.id.rb5);
        mRg = (RadioGroup) findViewById(R.id.rg);

1.我们需要创建一个类继承FragmentPagerAdapter

    private class fpa extends FragmentPagerAdapter{
    	//自己创建一个Fragment数组
        private ArrayList<Fragment> fragments;
        
        public fpa(@NonNull FragmentManager fm, ArrayList<Fragment> fragments) {
            super(fm);
            //让Fragment对应显示
            this.fragments = fragments;
        }
        /*
        @ position 代表当前页面页数 从0开始
        */
        @NonNull
        @Override
        public Fragment getItem(int position) {
            return fragments.get(position);
        }
        //设置滑动页面页数
        @Override
        public int getCount() {
            return fragments.size();
        }
    }

2.创建几个Fragment,并添加到Fragment数组里去,成功后是可以滑动了的。

        ArrayList<Fragment> fragments = new ArrayList<>();
        fragments.add(new Fragment_1());
        fragments.add(new Fragment_2());
        fragments.add(new Fragment_3());
        fragments.add(new Fragment_4());
        fragments.add(new Fragment_5());
        //通过第一步我们可以看到需要一个FragmentManager,get它,第二个参数是我们添加的,是一个Fragment数组,我们已经创建好了
        fpa fpa = new fpa(getSupportFragmentManager(),fragments);
        //mvp是ViewPager控件
        mVp.setAdapter(fpa);

3.设置对应改变颜色 在drawable中添加一个文件 在到xml控件下添加到背景颜色。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
	//checked 代表选中的意思 drawable 代表你对应的颜色
    <item android:state_checked="true" android:drawable="@color/colorPrimaryDark"/>
    <item android:state_checked="false" android:drawable="@color/colorAccent"/>
</selector>
	//我的创建的文件名为colorsselect
     android:background="@drawable/colorsselect"

4设置RadioGroup的点击改变页面事件

		//直接设置RadioGroup的点击事件
        mRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            /*
            @checkedId 代表你选中的按钮
            */
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                switch (checkedId){
                //当你选中的为rb1(名字自己取)就是第一个RadioButton,ViewPager就滑动到第一个界面
                    case R.id.rb1:
                        mVp.setCurrentItem(0);
                        break;
                    case R.id.rb2:
                        mVp.setCurrentItem(1);
                        break;
                    case R.id.rb3:
                        mVp.setCurrentItem(2);
                        break;
                    case R.id.rb4:
                        mVp.setCurrentItem(3);
                        break;
                    case R.id.rb5:
                        mVp.setCurrentItem(4);
                        break;
                }
            }
        });

5.滑动页面改变按钮

		//设置ViewPager的点击事件
        mVp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
            @Override
            //只需要用到这个方法 @position代表为当前界面
            public void onPageSelected(int position) {
                switch (position){
                //当前界面是第一个的时候,就是第一个按钮被选中 用switch记得break
                    case 0:
                        mRb1.setChecked(true);
                        break;
                    case 1:
                        mRb2.setChecked(true);
                        break;
                    case 2:
                        mRb3.setChecked(true);
                        break;
                    case 3:
                        mRb4.setChecked(true);
                        break;
                    case 4:
                        mRb5.setChecked(true);
                        break;
                }
            }
            @Override
            public void onPageScrollStateChanged(int state) {}
        });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值