RadioGroup RadioButton底部导航栏

复制代码
参考: https://blog.csdn.net/lu202032/article/details/117632709

activity_home.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"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <FrameLayout
        android:id="@+id/nav_host_fragment_activity_main"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />
    <!-- https://blog.csdn.net/lu202032/article/details/117632709 -->
    <RadioGroup
        android:id="@+id/ra_group"
        android:layout_width="match_parent"
        android:layout_height="70dp"
        android:gravity="center_vertical"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/home_rb_home"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:checked="true"
            android:drawableTop="@drawable/ic_home_frag_home"
            android:drawablePadding="3dp"
            android:gravity="center"
            android:text="首页"
            android:textColor="@drawable/home_tv_tc_sel" />

        <androidx.constraintlayout.widget.ConstraintLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1">

            <RadioButton
                android:id="@+id/home_rb_bill"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:button="@null"
                android:drawableTop="@drawable/ic_home_frag_bill"
                android:drawablePadding="3dp"
                android:gravity="center"
                android:text="账单"
                android:textColor="@drawable/home_tv_tc_sel"
                app:layout_constraintTop_toTopOf="parent" />

            <!-- 角标 -->
            <TextView
                android:id="@+id/home_rb_bill_badge"
                android:layout_width="5dp"
                android:layout_height="5dp"
                android:layout_alignParentTop="true"
                android:layout_alignParentRight="true"
                android:layout_marginEnd="-28dp"
                android:background="@drawable/home_rb_bill_badge"
                android:gravity="center"
                android:minWidth="5dp"
                android:minHeight="5dp"
                android:textColor="#FFFFFF"
                app:layout_constraintEnd_toEndOf="parent"
                app:layout_constraintStart_toStartOf="parent"
                app:layout_constraintTop_toTopOf="parent" />


        </androidx.constraintlayout.widget.ConstraintLayout>


        <RadioButton
            android:id="@+id/home_rb_my"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_weight="1"
            android:button="@null"
            android:drawableTop="@drawable/ic_home_frag_my"
            android:drawablePadding="3dp"
            android:gravity="center"
            android:text="我的"
            android:textColor="@drawable/home_tv_tc_sel" />

    </RadioGroup>
</LinearLayout>
复制代码
ic_home_frag_home
复制代码
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:drawable="@drawable/ic_home_frag_home_sel" />
    <item android:drawable="@drawable/ic_home_frag_home_def" />
</selector>
复制代码
home_tv_tc_sel
复制代码
<!-- res/drawable/home_tab.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_checked="true" android:color="#FF0000" /> <!-- 选中状态的颜色 -->
    <item android:color="#808080" /> <!-- 默认状态的颜色 -->
</selector>

HomeActivity.java

复制代码
public class HomeActivity extends BaseActivity<ActivityHomeBinding> {


    private BroadcastReceiver receiver;
    private x1Fragment x1Fragment;
    private xxxFragment xxxFragment;
    private x2Fragment x2Fragment;
    private x1FragmentType currentFragment;

    public static void open(BaseActivity context) { 
        Intent starter = new Intent(context, HomeActivity.class); 
        context.startActivity(starter);
        context.finish();
    }

    @Override
    protected ActivityHomeBinding getViewBinding() {
        return ActivityHomeBinding.inflate(getLayoutInflater());
    }

    @Override
    public void initData() { 
         
    }
 

    @Override
    public void initView() {
        setFragment(x1FragmentType.home);
    }

    public void setFragment(x1FragmentType fragType) {
        //获取Fragment管理器

        FragmentManager mFragmentManager = getSupportFragmentManager();
        //开启事务
        FragmentTransaction mTransaction = mFragmentManager.beginTransaction();
        //隐藏所有Fragment
        hideFragments(mTransaction);
        switch (fragType) {
            case home:
                if (x1Fragment == null) {
                    x1Fragment = new x1Fragment();
                    mTransaction.add(R.id.nav_host_fragment_activity_main, x1Fragment, "x1Fragment");
                } else {
                    mTransaction.show(x1Fragment);
                }
                break;
            case bill:
                if (xxxFragment == null) {
                    xxxFragment = new xxxFragment();
                    mTransaction.add(R.id.nav_host_fragment_activity_main, xxxFragment, "xxxFragment");
                } else {
                    mTransaction.show(xxxFragment);
                }
                break;
            case my:
                if (x2Fragment == null) {
                    x2Fragment = new x2Fragment();
                    mTransaction.add(R.id.nav_host_fragment_activity_main, x2Fragment, "x2Fragment");
                } else {
                    mTransaction.show(x2Fragment);
                }
                break;
            default:
                break;
        }
        //提交事务
        mTransaction.commitAllowingStateLoss();
        currentFragment = fragType;
    }

    //隐藏Fragment
    private void hideFragments(FragmentTransaction transaction) {
        if (xxxFragment != null) transaction.hide(xxxFragment);
        if (x1Fragment != null) transaction.hide(x1Fragment);
        if (x2Fragment != null) transaction.hide(x2Fragment);
    }

    @Override
    public void setListener() {
        mBinding.raGroup.setOnCheckedChangeListener((group, checkedId) -> {
            if (checkedId == R.id.home_rb_home) {
                setFragment(x1FragmentType.home);
            } else if (checkedId == R.id.home_rb_bill) {
                setFragment(x1FragmentType.bill);
            } else if (checkedId == R.id.home_rb_my) {
                setFragment(x1FragmentType.my);
            }
        });
    } 
}

home_rb_bill_badge.xml

复制代码
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/badge_background.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <solid android:color="#FF0000"/> <!-- 红色背景 -->
    <size
        android:width="20dp"
        android:height="20dp"/>
</shape>
相关推荐
++==12 小时前
git的安装以及基本命令使用、远程仓库的操作、vscode连接远程仓库进行项目的上传、gitee的使用
linux·git·gitee
QiLinkOS2 天前
QiLink开源生态的三维重构:基于时间、空间与社会价值的底层规则创新白皮书
大数据·c++·人工智能·科技·算法·gitee·开源
IT WorryFree2 天前
GitHub / Gitee / Gitea / GitLab 四平台完整对比(定位、优缺点、适用场景)
gitee·github·gitea
效能革命笔记4 天前
Gitee Team 如何支撑关键领域行业 DevSecOps 落地?
gitee
故渊at6 天前
第二板块:Android 四大组件标准化学理 | 第八篇:Service 后台执行实体与优先级
android·gitee·service·前台服务·后台服务
故渊at6 天前
第二板块:Android 四大组件标准化学理 | 第九篇:BroadcastReceiver 事件分发与有序广播
android·gitee·broadcast·广播·动态注册·静态注册
毛豆的毛豆Y6 天前
新上架!给 Gitee 用户做了个工具:CopoGit
gitee
hashiqimiya6 天前
每日android布局xml文件
android·xml·gitee
效能革命笔记6 天前
Gitee DevSecOps 军工软件工厂实践:以智能版本管理破解跨院所协同难题
gitee
QiLinkOS7 天前
合肥气链科技有限公司本质总结
c++·科技·算法·gitee·开源