Android 底部导航栏(BottomNavigationView+Fragment)实现

当一个项目开始时,我们需要确定我们App主页面框架,常用的写法包括:
RadioGroup+Fragment
TabLayout+Fragment
TabHost+Fragment
FragmentTabHost+Fragment
今天我与大家分享的是利用BottomNavigationView+Fragment打造一个底部导航栏效果。话不多说,先上效果图

Android 底部导航栏(BottomNavigationView+Fragment)实现_第1张图片
效果.gif

一、简介

BottomNavigationView是Android 5.0后推出的一个底部导航栏控件。一般配合Fragment使用。

二、集成

(1)Android support导入

implementation 'com.android.support:design:27.1.1'//版本号随项目的引用版本

② Android X导入

implementation 'com.google.android.material:material:1.1.0'

三、使用

注:项目Demo是Android X库使用的,如果自己项目使用Android support包,需自己切换下文件的包名

(1)创建activity_main.xml




    

  
 

    

(2)res文件目录下创建meun文件夹,并添加menu_main.xml



    
    
    

(3)MainActivity主要代码

package com.basics;

import android.os.Bundle;

import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import com.basics.module.home.TabHomeFragment;
import com.basics.module.mine.TabMineFragment;
import com.basics.module.template.TabTemplateFragment;
import com.common.lib.ui.BaseActivity;
import com.google.android.material.bottomnavigation.BottomNavigationView;

import java.util.ArrayList;
import java.util.List;

public class MainActivity extends BaseActivity {
    BottomNavigationView mNavigationView;
    private List fragments;

    @Override
    protected void onCreateProxy(Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        init();
        setListeners();
    }

    @Override
    public void init() {
        mNavigationView=findViewById(R.id.bottom_nav);
        fragments = new ArrayList<>();
        fragments.add(new TabHomeFragment());
        fragments.add(new TabTemplateFragment());
        fragments.add(new TabMineFragment());
        int index=0;
        switchFragment(index);
    }

    @Override
    public void setListeners() {
        mNavigationView.setOnNavigationItemSelectedListener(menuItem -> {
            switch (menuItem.getItemId()) {
                case R.id.tab_home:
                    switchFragment(0);
                    break;
                case R.id.tab_template:
                    switchFragment(1);
                    break;
                case R.id.tab_mine:
                    switchFragment(2);
                    break;
            }
            // 这里注意返回true,否则点击失效
            return true;
        });
    }

    private void switchFragment(int position) {
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.fragment_container, fragments.get(position));
        transaction.commit();
    }
}

你可能感兴趣的:(Android 底部导航栏(BottomNavigationView+Fragment)实现)