Android使用RadioButton结合fragment实现底部菜单

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaihaohao1/article/details/82865903

效果图
在这里插入图片描述
思路:
单选框实现底部菜单的切换
在代码中监听单选框选中的是那个菜单,显示对应的fragment
fragment使用show()和hide()实现切换

在MainActivity中:

package com.zhh.android;

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.util.Log;
import android.widget.RadioButton;
import android.widget.RadioGroup;

public class MainActivity extends FragmentActivity {
//  单选框布局
    private RadioGroup radioGroup;
//  单选框1
    private RadioButton rbProject;
//  单选框2
    private RadioButton rbData;
//  单选框3
    private RadioButton rbMine;
//  fragment标记
    public static final String fragment1Tag = "fragment1";
    public static final String fragment2Tag = "fragment2";
    public static final String fragment3Tag = "fragment3";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initOnclick();
    }

    public void initView() {
        radioGroup = (RadioGroup)findViewById(R.id.radioGroup);
        rbProject = (RadioButton)findViewById(R.id.rbProject);
        rbData = (RadioButton)findViewById(R.id.rbData);
        rbMine = (RadioButton)findViewById(R.id.rbMine);
        firstShow();
    }


    public void initOnclick() {
//      单选框的点击事件,判断哪一个选中
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                FragmentManager fragmentManager = getSupportFragmentManager();
                FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
//      用对应的标记在内存中找对应的Fragment对象
                Fragment blankFragment1 =  fragmentManager.findFragmentByTag(fragment1Tag);
                Fragment  blankFragment2 =  fragmentManager.findFragmentByTag(fragment2Tag);
                Fragment  blankFragment3 =  fragmentManager.findFragmentByTag(fragment3Tag);


                if (blankFragment1 != null) {
                    fragmentTransaction.hide(blankFragment1);
                }
                if (blankFragment2 != null) {
                    fragmentTransaction.hide(blankFragment2);
                }
                if (blankFragment3 != null) {
                    fragmentTransaction.hide(blankFragment3);
                }

                switch (checkedId) {
                    case R.id.rbProject:
                        Log.e("111", "button1");
                        if (blankFragment1 == null) {
                            blankFragment1 = new HomeFragment();
                            fragmentTransaction.add(R.id.activity_main_framlayout, blankFragment1, fragment1Tag);

                        } else {
                            fragmentTransaction.show(blankFragment1);

                        }
                        break;
                    case R.id.rbData:
                        if (blankFragment2 == null) {
                            blankFragment2 = new DataFragment();
                            fragmentTransaction.add(R.id.activity_main_framlayout, blankFragment2, fragment2Tag);

                        } else {
                            fragmentTransaction.show(blankFragment2);

                        }
                        break;
                    case R.id.rbMine:
                        if (blankFragment3 == null) {
                            blankFragment3 = new AppMineFragment();
                            fragmentTransaction.add(R.id.activity_main_framlayout, blankFragment3, fragment3Tag);
                        } else {
                            fragmentTransaction.show(blankFragment3);
                        }
                        break;
                }
                fragmentTransaction.commit();
            }
        });

    }

    /**
     * 初始化时显示的fragment
     */
    private void firstShow(){
        //实例化fragment对象
        HomeFragment blankFragment1 = new HomeFragment();
//              获取fragment管理器,并显示fragment,传入一个记号
        getSupportFragmentManager().beginTransaction().add(R.id.activity_main_framlayout,blankFragment1,fragment1Tag).commit();
    }

}

activity_main.xml中

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context="com.linkgap.butler.MainActivity">
    <!-- 显示fragment的布局-->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:id="@+id/activity_main_framlayout"
        android:layout_height="0dp">
    </FrameLayout>
    <!--底部菜单-->
    <RadioGroup
        android:layout_width="match_parent"
        android:orientation="horizontal"
        android:background="#FFFFFF"
        android:id="@+id/radioGroup"
        android:layout_height="wrap_content">
        <!-- 首页-->
        <RadioButton
            android:id="@+id/rbProject"
            android:text="首页"
            android:button="@null"
            android:gravity="center"
            android:textSize="12sp"
            android:drawablePadding="2dp"
            android:padding="7dp"
            android:checked="true"
            android:drawableTop="@drawable/selector_project"
            android:layout_width="0dp"
            android:textColor="@drawable/selector_textcolor"
            android:layout_weight="1"
            android:layout_height="wrap_content" />
        <!-- 数据分析-->
        <RadioButton
            android:id="@+id/rbData"
            android:text="数据分析"
            android:button="@null"
            android:gravity="center"
            android:textSize="12sp"
            android:drawablePadding="2dp"
            android:padding="7dp"
            android:drawableTop="@drawable/selector_message"
            android:layout_width="0dp"
            android:textColor="@drawable/selector_textcolor"
            android:layout_weight="1"
            android:layout_height="wrap_content" />
        <!-- 我的-->
        <RadioButton
            android:id="@+id/rbMine"
            android:text="我的"
            android:button="@null"
            android:gravity="center"
            android:textSize="12sp"
            android:drawablePadding="2dp"
            android:padding="7dp"
            android:drawableTop="@drawable/selector_mine"
            android:layout_width="0dp"
            android:textColor="@drawable/selector_textcolor"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            />
    </RadioGroup>

</LinearLayout>

单选框对应的图片选择器
selector_project.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@mipmap/project_fill" android:state_checked="true"></item>
    <item android:drawable="@mipmap/project"></item>
</selector>

单选框对应的文字选择器
selector_textcolor

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true"  android:color="#4395FF"/>

    <item android:color="#666666"/>
</selector>

创建三个fragment类,分别是
AppMineFragment
DataFragment
HomeFragment

源码下载:
https://download.csdn.net/download/zhaihaohao1/10690724

猜你喜欢

转载自blog.csdn.net/zhaihaohao1/article/details/82865903