安卓开发-添加底部导航栏

内容纲要

添加底部导航栏

BottomNavigationView是一个底部导航栏控件,一般和fragment一起使用

导入依赖库

Gradle添加

//implementation 'androidx.appcompat:appcompat:1.1.0'
//导入最新的工具包使用BottomNavigator底部导航栏
//注意版本,一般和项目的appcompat版本一致
implementation "com.google.android.material:material:1.2.0-alpha01"

在布局的xml中添加控件

activity_home.xml

<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/nav_view"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_marginEnd="0dp"
    android:layout_marginStart="0dp"
    android:background="?android:attr/windowBackground"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:menu="@menu/bottom_nav_menu"/>

新建底部导航栏菜单

bottom_nav_menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/pixel_50_home"
        android:title="@string/nav_title_home"/>

    <item
        android:id="@+id/nav_search"
        android:icon="@drawable/pixel_24_zoom"
        android:title="@string/nav_title_zoom" />

    <item
        android:id="@+id/nav_user"
        android:icon="@drawable/pixel_22_users_1"
        android:title="@string/nav_title_user" />
</menu>

使用文字的时候尽量不要直接写在布局的xml里面,而是写在strings.xml里面,便于进行多国语言的翻译和其它使用

导航栏图标样式修改

在drawable中新建selected_menu_color.xml

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

在BottomNavigator中添加属性

//导航栏中图片的颜色
app:itemIconTint="@drawable/selected_menu_color"
//导航栏文字的颜色
app:itemTextColor="@drawable/selected_menu_color"

底部导航栏点击事件

设置点击事件

private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener
        = new BottomNavigationView.OnNavigationItemSelectedListener() {
    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.main_wallpaper:
                //这里因为需要对3个fragment进行切换
                //start
                if (lastfragment != 0) {
                    switchFragment(lastfragment, 0);
                    lastfragment = 0;
                }
                //end
                //如果只是想测试按钮点击,不管fragment的切换,可以把start到end里面的内容去掉
                return true;
            case R.id.main_music:
                if (lastfragment != 1) {
                    switchFragment(lastfragment, 1);
                    lastfragment = 1;
                }
                return true;
            case R.id.main_my:
                if (lastfragment != 2) {
                    switchFragment(lastfragment, 2);
                    lastfragment = 2;
                }
                return true;
            default:
                break;
        }
        return false;
    }
};

添加点击事件

创建对象

//底部导航栏
BottomNavigationView bottomNavigationView;

给对象添加点击事件监听器

BottomNavigationView bottomNavigationView;
bottomNavigation = (BottomNavigationView) findViewById(R.id.bottomNavigation);
//这里是bottomnavigationview的点击事件  
bottomNavigation.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener);

尾言

学习自BottomNavigationView的基本使用


发表评论