当前位置: 首页 > 工具软件 > Bottom > 使用案例 >

导航组件—Android应用中使用底部导航栏BottomNavigationView

扶杜吟
2023-12-01

一. 在Activity中使用底部导航栏BottomNavigationView

步骤一:在菜单文件中定义底部导航菜单选项内容

1.1 新建menu文件menu_bottom_nav.xml(src/main/res/menu/menu_bottom_nav.xml)

1.2 构建menu_bottom_nav.xml(src/main/res/menu/menu_bottom_nav.xml)内容

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <!--    设置首页选项的id,icon(图标),title(选项标题)-->
    <item
        android:id="@+id/item_bottomnav_home"
        android:icon="@drawable/ic_main_home_black_256"
        android:title="@string/home" />
    <!--    设置消息选项的id,icon(图标),title(选项标题)-->
    <item
        android:id="@+id/item_bottomnav_message"
        android:icon="@drawable/ic_main_message_black_256"
        android:title="@string/message" />
    <!--    设置通讯录选项的id,icon(图标),title(选项标题)-->
    <item
        android:id="@+id/item_bottomnav_addressbook"
        android:icon="@drawable/ic_main_addressbook_black_256"
        android:title="@string/addressbook" />
    <!--    设置个人中心选项的id,icon(图标),title(选项标题)-->
    <item
        android:id="@+id/item_bottomnav_personalCenter"
        android:icon="@drawable/ic_main_personalcenter_black_256"
        android:title="@string/mine" />
</menu>

其中src/main/res/values/strings.xml,src/main/res/drawable中的内容需要自己添加

步骤二:在activity布局文件中定义底部导航栏

1.1 在activity布局文件activity_main.xml(src/main/res/layout/activity_main.xml)中定义BottomNavigationView

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNavigationView_main"
        android:layout_width="match_parent"
        android:layout_height="@dimen/bottomNav_height_56"
        app:menu="@menu/menu_bottom_nav">

其中src/main/res/values/dimens.xml中的内容需要自己添加

1.2 进阶(非必要,可略过):为底部导航栏菜单的每个项目的图标(itemIcon)与标题(itemTextColor)设置点击的颜色变化

1.2.1 新建selector文件selector_bottomnav.xml(src/main/res/drawable/selector_bottomnav.xml)

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/viewSelected" android:state_checked="true" />
    <item android:color="@color/grey_600" android:state_checked="false" />
</selector>

其中src/main/res/values/colors.xml中的内容需要自己添加
1.2.2 在BottomNavigationView中引用selector_bottomnav.xml

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomNavigationView_main"
        android:layout_width="match_parent"
        android:layout_height="@dimen/bottomNav_height_56"
        app:menu="@menu/menu_bottom_nav"
        app:itemIconTint="@drawable/selector_bottomnav"
        app:itemTextColor="@drawable/selector_bottomnav">

步骤三:在activity Java文件中定义底部导航栏选项的监听事件

        // 为bottomNavigationViewMain设置监听事件setOnNavigationItemSelectedListener,onNavigationItemSelected,用于改变viewPager2Main的CurrentItem
        binding.bottomNavigationViewMain.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @SuppressLint("NonConstantResourceId")
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                     case R.id.item_bottomnav_home:
                        // 点击底部导航home选项的响应事件
                        binding.viewPager2Main.setCurrentItem(0);//本语句可替换为您自己的响应事件
                        return true;
                    case R.id.item_bottomnav_message:
                        // 点击底部导航message选项的响应事件
                        binding.viewPager2Main.setCurrentItem(1);//本语句可替换为您自己的响应事件
                        return true;
                    case R.id.item_bottomnav_addressbook:
                        // 点击底部导航addressbook选项的响应事件
                        binding.viewPager2Main.setCurrentItem(2);//本语句可替换为您自己的响应事件
                        return true;
                    case R.id.item_bottomnav_personalCenter:
                        // 点击底部导航personalCenter选项的响应事件
                        binding.viewPager2Main.setCurrentItem(3);//本语句可替换为您自己的响应事件
                        return true;
                    default:
                        break;
                }
                return false;
            }
        });

本段代码中使用了视图绑定(binding)的功能,如想了解相关内容,请转至:
https://blog.csdn.net/weixin_44193930/article/details/121979673


二. 参考资料

https://developer.android.google.cn/guide/navigation/navigation-ui


三. 结束语

本文档为博主自主学习Android应用开发过程中的经验总结与心得体会,希望能在读者的学习道路上帮上一点点小忙,共同学习,共同成长。
欢迎读者评论留言,点赞,收藏,分享!


 类似资料: