安卓--底部导航栏BottomNavigationBar使用方法

前言

相信大家都有接触到安卓底部导航栏的使用,点击底部不同的图标显示不同的页面实现导航功能。而实现这种功能有很多的方法,有原始线性布局LinearLayout + TextView,按钮组RadioGroup + RadioButton,还有BottomNavigationBar实现。最近学习了BottomNavigationBar使用,写这篇文章记录一下学习过程。

实现如图:
在这里插入图片描述

使用之前添加依赖:

implementation 'com.ashokvarma.android:bottom-navigation-bar:2.0.4'

模仿QQ音乐底部导航栏 如图下:

添加布局

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    
    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.ashokvarma.bottomnavigation.BottomNavigationBar
        android:id="@+id/bottom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_gravity="bottom"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

设置BottomNavigationBar

    private void initBottomNavigationBar(){
        BottomNavigationBar mBottomNavigationBar = findViewById(R.id.bottom_navigation_bar);
        // 初始化导航栏
        mBottomNavigationBar
                .setTabSelectedListener(this)
                .setMode(BottomNavigationBar.MODE_FIXED ) //MODE_FIXED样式,“填充模式”,未选中的Item不显示文字,选中的显示文字,有切换动画效果。
                .setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC)//BACKGROUND_STYLE_STATIC,"静态样式",点击没有波纹效果
                .setActiveColor("#71C671")//选中颜色
//                .setInActiveColor("#FFFAFA")//未选中颜色
                .setBarBackgroundColor("#FFFFFF");//导航栏背景色
        
        // 添加导航按钮
        mBottomNavigationBar
                .addItem(new BottomNavigationItem(R.drawable.ic_music02,"音乐馆"))
                .addItem(new BottomNavigationItem(R.drawable.ic_recommend02,"推荐"))
                .addItem(new BottomNavigationItem(R.drawable.ic_dynamic,"动态"))
                .addItem(new BottomNavigationItem(R.drawable.ic_mine,"我的"))
                .initialise();//完成设置后须调用此方法
    }

用法说明:
setMode方法中,Mode有3个值可以设置,分别是:
1.MODE_DEFAULT
默认模式,如果Item的个数<=3就会使用MODE_FIXED模式,否则使用MODE_SHIFTING模式。
2.MODE_FIXED (固定大小)
填充模式,未选中的Item会显示文字,没有换挡动画。
3.MODE_SHIFTING (不固定大小)
换挡模式,未选中的Item不会显示文字,选中的会显示文字。在切换的时候会有一个像换挡的动画。
setBackgroundStyle方法中,BackgroundStyle也有3个值可以设置,分别是:
1.BACKGROUND_STYLE_DEFAULT
如果设置的Mode为MODE_FIXED,将使用BACKGROUND_STYLE_STATIC 。如果Mode为MODE_SHIFTING将使用BACKGROUND_STYLE_RIPPLE。

2.BACKGROUND_STYLE_STATIC
点击的时候没有水波纹效果,航条的背景色是白色,加上setBarBackgroundColor()可以设置成你所需要的任何背景颜色

BACKGROUND_STYLE_RIPPLE
点击的时候有水波纹效果,导航条的背景色是你设置的处于选中状态的 Item的颜色(ActiveColor),也就是setActiveColorResource这个设置的颜色

参考:
Android底部导航 BottomNavigationBar(Google官方)

发布了4 篇原创文章 · 获赞 1 · 访问量 108

猜你喜欢

转载自blog.csdn.net/qq_44830568/article/details/105311337