最简单靠谱的底部导航栏实现!!!

本文介绍了一种在Android应用中实现底部导航栏的方法,通过使用RadioGroup和Fragment结合,实现了一个简单易用的底部导航栏组件。文章详细展示了布局文件配置、样式设置以及如何根据选中的RadioButton来切换不同的Fragment。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Android实现底部导航栏的方式很多,有5种实现方式。
作者使用过两种:RadioGroup+Fragment;FragmentTabHost;其中第一种更容易上手。

实现效果

这里写图片描述

目录

  • 创建RadioGroup
  • 监听,切换 Fragment

创建RadioGroup

 <RadioGroup
        android:id="@+id/radiogroup"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/rb_chat"
            style="@style/BottomNavigationStyle"
            android:drawableTop="@drawable/main_bottom_chat_selector"
            android:text="@string/navigation_chat" />

        <RadioButton
            android:id="@+id/rb_friend"
            style="@style/BottomNavigationStyle"
            android:drawableTop="@drawable/main_bottom_friend_selector"
            android:text="@string/navigation_friend" />

        <RadioButton
            android:id="@+id/rb_setting"
            style="@style/BottomNavigationStyle"
            android:drawableTop="@drawable/main_bottom_setting_selector"
            android:text="@string/navigation_setting" />
    </RadioGroup>

设置style

<style name="BottomNavigationStyle">
        <item name="android:layout_width">0dp</item>
        <item name="android:layout_weight">1</item>
        <item name="android:button">@null</item>
        <item name="android:textSize">10sp</item>
        <item name="android:gravity">center</item>
        <item name="android:layout_height">match_parent</item>
    </style>

监听,切换 Fragment

 //监听RadioGroup的变化
    private void listenRgChange() {

        //RadioGroup 绑定监听器
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            Fragment fragment = null;

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // 检查被点击的ID
                switch (checkedId) {

                    case R.id.rb_chat:
                        fragment = chatFragment;
                        break;

                    case R.id.rb_friend:
                        fragment = friendFragmengt;
                        break;

                    case R.id.rb_setting:
                        fragment = settingFragment;
                        break;

                }
                //切换到对应的Fragement
                switchFragment(fragment);
            }
        });

        //设置默认页面为会话页面
        radioGroup.check(R.id.rb_chat);


    }

    //实现“切换到对应的Fragement”
    private void switchFragment(Fragment fragment) {
        FragmentManager supportFragmentManager = getSupportFragmentManager();
        supportFragmentManager.beginTransaction().replace(R.id.framelayout, fragment).commit();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值