美文网首页android
Android 底部导航栏(BottomNavigationVi

Android 底部导航栏(BottomNavigationVi

作者: 丿独狼灬望曰 | 来源:发表于2020-04-15 22:45 被阅读0次

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

效果.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

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

  <!--androdid support 使用-->
 <!--   <android.support.design.widget.BottomNavigationView
        android:id="@+id/bottom_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/general_line_top_bg"
        app:itemIconTint="@color/color_main_tab"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@color/color_main_tab"
        app:menu="@menu/menu_main">
    </android.support.design.widget.BottomNavigationView>-->

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_nav"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/general_line_top_bg"
        app:itemIconTint="@color/color_main_tab"
        app:labelVisibilityMode="labeled"
        app:itemTextColor="@color/color_main_tab"
        app:menu="@menu/menu_main" />
</LinearLayout>

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

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/tab_home"
        android:icon="@drawable/tab_home"
        android:title="@string/home" />
    <item
        android:id="@+id/tab_template"
        android:icon="@drawable/tab_template"
        android:title="@string/template" />
    <item
        android:id="@+id/tab_mine"
        android:icon="@drawable/tab_mine"
        android:title="@string/mine" />
</menu>

(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<Fragment> 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 底部导航栏(BottomNavigationVi

    当一个项目开始时,我们需要确定我们App主页面框架,常用的写法包括:① RadioGroup+Fragment② ...

  • 安卓底部导航

    Android底部导航栏实现(一)之BottomNavigationBarAndroid底部导航栏实现(二)之Ra...

  • Android底部导航栏之RadioButton

    参考:五种方式实现Android底部导航栏Android底部导航栏实现(二)之RadioGroup 一. 简介 1...

  • BottomNavigationView的属性设置

    底部导航栏 底部导航栏的使用比较常见,目前常用的APP几乎都是使用底部导航栏将内容分类。底部导航栏的实现也比较简单...

  • 2018-10-30

    Android 使用BottomNavigationView实现底部导航栏 今天我们来使用BottomNaviga...

  • Android底部导航栏之BottomNavigationBar

    参考:五种方式实现Android底部导航栏BottomNavigation(官方)BottomNavigation...

  • Github之安卓库总结

    Android底部导航栏████几行代码实现Tab导航(随意定制加号,带红点消息提示) 引导界面滑动导航 + 大于...

  • RecycleView 中android:clipToPaddi

    如果想让RecyclerView在透明的导航栏底部滚动,使用android:fitsSystemWindows="...

  • android底部导航栏

    实现跳转到TabsPage的某一个特定的界面,比如最上面的效果图,当从LoginPage跳转到TabsPage的时...

  • Android 底部导航栏

    效果图 准备工作: 注:准备工作里面需要做的就是①添加design依赖;②color(颜色)的一些添加③添加两个资...

网友评论

    本文标题:Android 底部导航栏(BottomNavigationVi

    本文链接:https://www.haomeiwen.com/subject/bzghvhtx.html