Fork me on GitHub

Fragment配合RadioGroup实现点击切换布局

这里用了

 compile 'com.jakewharton:butterknife:7.0.1'
compile 'org.greenrobot:eventbus:3.0.0'

 

MainActivity布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    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"
    android:orientation="vertical"
    tools:context="liu.radiobuttonandfragment.MainActivity">


    <FrameLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

    </FrameLayout>

    <LinearLayout

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@mipmap/nav_footer_white"
        android:gravity="center"

        android:orientation="horizontal">


        <RadioGroup
            android:id="@+id/rgTools"
            android:layout_width="match_parent"
            android:layout_height="match_parent"


            android:gravity="center"
            android:orientation="horizontal">


            <RadioButton
                android:id="@+id/rbHome"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="right"
                android:layout_weight="1"
                android:button="@null"
                android:checked="true"
                android:drawableTop="@drawable/selector_main_btn_home"
                android:gravity="center"
                android:paddingLeft="0dp"
                android:text="首页"/>

            <RadioButton
                android:id="@+id/rbShop"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:button="@null"
                android:checked="false"
                android:drawableTop="@drawable/selector_main_btn_shopcart"
                android:gravity="center"
                android:text="购物车"/>

            <RadioButton
                android:checked="false"
                android:id="@+id/rbMessage"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:button="@null"
                android:drawableTop="@drawable/selector_main_btn_message"
                android:gravity="center"
                android:text="消息"/>

            <RadioButton
                android:checked="false"
                android:id="@+id/rbMine"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:layout_weight="1"
                android:button="@null"
                android:drawableTop="@drawable/selector_main_btn_mine"
                android:gravity="center"
                android:text="我的"/>

        </RadioGroup>

    </LinearLayout>


</LinearLayout>

主要代码

 private void initFragment() {
        //首页
        HomeFragment homeFragment =new HomeFragment();
        //购物车
        ShopcartFragment shopcartFragment =new ShopcartFragment();

        //消息
        MessageFragment messageFragment =new MessageFragment();
        //个人中心

        MineFragment mineFragment =new MineFragment();

        //添加到数组
        mFragments = new Fragment[]{homeFragment,shopcartFragment,messageFragment,mineFragment};

        //开启事务

        FragmentTransaction ft =
                getSupportFragmentManager().beginTransaction();

        //添加首页
        ft.add(R.id.content,homeFragment).commit();

        //默认设置为第0个
        setIndexSelected(0);


    }



    private void setIndexSelected(int index) {

        if(mIndex==index){
            return;
        }
        FragmentManager    fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft              = fragmentManager.beginTransaction();


        //隐藏
        ft.hide(mFragments[mIndex]);
        //判断是否添加
        if(!mFragments[index].isAdded()){
            ft.add(R.id.content,mFragments[index]).show(mFragments[index]);
        }else {
            ft.show(mFragments[index]);
        }

        ft.commit();
        //再次赋值
        mIndex=index;

    }

    @OnClick({R.id.rbHome, R.id.rbShop, R.id.rbMessage, R.id.rbMine})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.rbHome:
                setIndexSelected(0);
                break;
            case R.id.rbShop:
                setIndexSelected(1);
                break;
            case R.id.rbMessage:
                setIndexSelected(2);
                break;
            case R.id.rbMine:
                setIndexSelected(3);
                break;
        }

    }

 

源码:

https://github.com/ln0491/RadioButtonAndFragment

 

posted @ 2016-08-28 13:59  森林森  阅读(13084)  评论(0编辑  收藏  举报