BottomNavigationView的使用小结

本文首次发表 蜗牛魔方
转载请注明
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 会被选中。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值