BottomNavigationView的使用小结

本文详细介绍如何在Android应用中使用BottomNavigationView组件,包括添加依赖、XML布局配置、设置样式及响应事件的方法,解决超过三个Item显示效果偏移的问题。

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

本文首次发表 蜗牛魔方
转载请注明
demo地址

1. 添加依赖

 implementation 'com.android.support:design:28.0.0'

2. xml 写法

<android.support.design.widget.BottomNavigationView
            android:id="@+id/bottom_navigation_view"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:labelVisibilityMode="labeled"
            app:itemIconTint="@color/nav_state_list"
            app:itemTextColor="@color/nav_state_list"
            android:background="?android:attr/windowBackground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/container"
            app:menu="@menu/navigation">

BottomNavigationView 中的Item 超过三个显示效果会有偏移,如果设置了文字和图片,那么只有被选中的显示文字或图片,其他的只显示图片,如果设置的Item超过5个,那么会直接报错。

app:labelVisibilityMode="labeled" 设置显示文字和图片。
 app:itemIconTint="@color/nav_state_list     app:itemTextColor="@color/nav_state_list" 	
 设置Item中文字和图片的选中和未选中的颜色
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- Item checked -->
    <item android:color="@color/colorAccent" android:state_checked="true" />
    <!-- Item pressed -->
    <item android:color="@color/colorAccent" android:state_pressed="true" />
    <!-- Item default -->
    <item android:color="@color/colorPrimaryDark" />
</selector>

设置Item app:menu="@menu/navigation" 布局文件:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/nav_find"
        android:icon="@drawable/ic_nav_find_black_24dp"
        android:title="@string/nav_find" />

    <item
        android:id="@+id/nav_video"
        android:icon="@drawable/ic_nav_video_black_24dp"
        android:checked="true"
        android:title="@string/nav_video" />

    <item
        android:id="@+id/nav_my"
        android:icon="@drawable/ic_nav_my_black_24dp"
        android:title="@string/nav_my" />

    <item
        android:id="@+id/nav_friend"
        android:icon="@drawable/ic_nav_friend_black_24dp"
        android:title="@string/nav_friend" />

    <item
        android:id="@+id/nav_account"
        android:icon="@drawable/ic_nav_person_black_24dp"
        app:showAsAction="always"
        android:title="@string/nav_account" />

</menu>

注册点击事件

 mBinding.includeMainContent.bottomNavigationView.setOnNavigationItemSelectedListener(menuItem -> {

            switch (menuItem.getItemId()) {
                case R.id.nav_find:
                    replaceFragment(lastShowFragment,0);
                    ToastUtil.INSTANCE.show(getContext(), "find");

                    break;
                case R.id.nav_video:
                    replaceFragment(lastShowFragment,1);
                    break;
                case R.id.nav_my:
                    replaceFragment(lastShowFragment,2);
                    ToastUtil.INSTANCE.show(getContext(), "my");
                    break;
                case R.id.nav_friend:
                    replaceFragment(lastShowFragment,3);
                    ToastUtil.INSTANCE.show(getContext(), "friend");
                    break;
                case R.id.nav_account:
                    replaceFragment(lastShowFragment,4);
                    ToastUtil.INSTANCE.show(getContext(), "account");
                    break;
                default:
                    ToastUtil.INSTANCE.show(getContext(), "find");
                    break;
            }
            **return true;**
        });

TIPS: OnNavigationItemSelected方法的返回值是一个boolean 返回false 点击item 不会被选中,返回true 点击Item 会被选中。

BottomNavigationView是安卓官方提供的底部导航栏控件,常常与fragment一起使用。要使用BottomNavigationView,首先需要导入相应的包,例如implementation 'com.google.android.material:material:1.0.0'。然后,在布局文件中添加BottomNavigationView的代码,设置其id、宽高、文本颜色、图标颜色和菜单等属性。具体的使用可以参考官方的设计规范 https://material.io/guidelines/components/bottom-navigation.html#,根据需要可以设置底部导航的标签数量在3到5之间时使用BottomNavigationView。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [BottomNavigationView--基本使用总结](https://blog.csdn.net/lwh156541064/article/details/104658144)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [BottomNavigationView的基本使用](https://blog.csdn.net/qq_32534441/article/details/105227916)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值