目录

1 as自动生

2 xml代码

如果要修改底部的图标和文字需要去bottom_nav_menu修改

如果你要修改默认点击颜色需要去主题颜色修改

如果你要修改底部背景颜色可以在BottomNavigationView 的背景颜色修改

如果你要 自定义 点击 图标和文字 颜色可以自定义一个选择器修改

3 MainActivity 代码

如果不想想使用ActionBar 可以把注释掉这句代码


1 as自动生

2 xml代码

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/container"android:layout_width="match_parent"android:layout_height="match_parent">
<!--    android:background="?android:attr/windowBackground"?--><com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/nav_view"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="0dp"android:layout_marginEnd="0dp"android:background="@color/white_1"app:itemIconTint="@drawable/bottom_navigation_item_selector"app:itemTextColor="@drawable/bottom_navigation_item_selector"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:menu="@menu/bottom_nav_menu" /><!--    bottom_navigation_item_selector 修改按钮颜色--><fragmentandroid:id="@+id/nav_host_fragment_activity_main"android:name="androidx.navigation.fragment.NavHostFragment"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_marginBottom="56dp"app:defaultNavHost="true"app:layout_constraintBottom_toTopOf="@id/nav_view"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:layout_constraintTop_toTopOf="parent"app:navGraph="@navigation/mobile_navigation" /><!-- 上面那个一定要写  android:layout_marginBottom="56dp",否则会出现底部看不到的情况-->
</androidx.constraintlayout.widget.ConstraintLayout>

这个有一个bug是,界面的底部是看不到的,需要增加marginbuttom 处理

 android:layout_marginBottom="56dp"

为什么是56dp?

我去查看了BottomNavigationView源码看到高度为56dp,所以距离底部56dp可以保证显示的完整性

文件列表里面有个新的东西

这些就是 Navigation 对应的三个fragment,点击底部按钮可以切换。

如果要修改底部的图标和文字需要去bottom_nav_menu修改

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/navigation_fast"android:icon="@drawable/ic_home_black_24dp"android:title="@string/title_fast" /><itemandroid:id="@+id/navigation_all"android:icon="@drawable/ic_dashboard_black_24dp"android:title="@string/title_all" /><itemandroid:id="@+id/navigation_my"android:icon="@drawable/ic_my_black_24dp"android:title="@string/title_my" /></menu>

如果你要修改默认点击颜色需要去主题颜色修改

<resources xmlns:tools="http://schemas.android.com/tools"><!-- Base application theme. --><style name="Theme.MyApplication" parent="Theme.AppCompat.NoActionBar"><!-- Primary brand color. --><item name="colorPrimary">@color/blue</item><item name="colorPrimaryVariant">@color/blue</item><item name="colorOnPrimary">@color/blue</item><!-- Secondary brand color. --><item name="colorSecondary">@color/teal_200</item><item name="colorSecondaryVariant">@color/teal_700</item><item name="colorOnSecondary">@color/black</item><!-- Status bar color. --><item name="android:statusBarColor" tools:targetApi="l">?attr/colorPrimaryVariant</item><!-- Customize your theme here. --></style>
</resources>

如果你要修改底部背景颜色可以在BottomNavigationView 的背景颜色修改

android:background="@color/white_1"

如果你要 自定义 点击 图标和文字 颜色可以自定义一个选择器修改

bottom_navigation_item_selector

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"><item android:color="@color/color_focused" android:state_checked="true" /><item android:color="@color/color_un_focused" android:state_checked="false" />
</selector>
  <com.google.android.material.bottomnavigation.BottomNavigationViewandroid:id="@+id/nav_view"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_marginStart="0dp"android:layout_marginEnd="0dp"android:background="@color/white_1"app:itemIconTint="@drawable/bottom_navigation_item_selector"app:itemTextColor="@drawable/bottom_navigation_item_selector"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:menu="@menu/bottom_nav_menu" />
 app:itemIconTint="@drawable/bottom_navigation_item_selector"app:itemTextColor="@drawable/bottom_navigation_item_selector"

这两句代码就是对应的修改代码

 3 MainActivity 代码

public class MainActivity extends AppCompatActivity {private ActivityMainBinding binding;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);binding = ActivityMainBinding.inflate(getLayoutInflater());setContentView(binding.getRoot());BottomNavigationView navView = findViewById(R.id.nav_view);//将每个菜单ID作为一组ID传递,因为每个菜单应该被视为顶级目的地。//自己在menu里修改文字和图片
//        AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
//                R.id.navigation_fast, R.id.navigation_all, R.id.navigation_my)
//                .build();NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
//        NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);//不要actionbarNavigationUI.setupWithNavController(binding.navView, navController);}}

如果不想想使用ActionBar 可以把注释掉这句代码

 NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);

我这是项目不需要actionbar,自己做了个title

这样就做好了框架,其它要修改的代码在fragment里面写就可以了

BottomNavigationView与Navigation使用相关推荐

  1. Android 官方架构组件 Navigation 使用详解

    前言 前段时间,我在做项目开发的时候对Fragment的管理遇到几个小问题,总觉得在现阶段封装好的Fragment管理器不太优雅.这成为我下决心学习Jetpack在很早之前推出的Navigation库 ...

  2. WanJetpack项目:用Jetpack实现玩Android,追求最官方的实现方式

    项目简介 慕灵小说网 https://www.2561.info 玩Android demo.用Jetpack MVVM开发架构.单Activity多Fragment项目设计,项目结构清晰,代码简洁优 ...

  3. Android Navigation与BottomNavigationView实现底部导航栏

    底部导航栏 一.效果图 二.实现 1.创建Fragment以及布局文件 2.添加FragmentContainerView和BottomNavigationView两个控件 3.配置xml资源文件 4 ...

  4. Android Jetpack 学习之Navigation、BottomNavigationView

    先上效果图: Navigation组件,也可以理解成FragmentNavigation.它提供了多Fragment之间的转场.栈管理,帮助我们可以更轻松的使用Fragment.在抽屉式导航栏.底部导 ...

  5. BottomNavigationView+Navigation 添加底部导航菜单切换时的fragment过渡动画animation

    Navigation默认的透明度动画,只有300毫秒,通过BottomNavigationView切换fragment时,几乎看不到过渡动画的效果,开始还以为没有动画. 开始在网上查找相关资料,最后找 ...

  6. Android Jetpack组件之Navigation使用-源码

    1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...

  7. BottomNavigationView+ViewPager+Fragment仿微信底部导航栏

    目标: 要实现的界面如下: 此时,我们需要采用BottomNavigationView+ViewPager+Fragment,一点点的说起.首先要在app/build.gradle里添加: imple ...

  8. Android—Navigation的使用

    Navigation是Fragment的一个容器,用于管理Fragment. 我们可以通过它实现Fragment的跳转以及传值等操作. 1.先写Fragment的xml文件 <?xml vers ...

  9. Android开发笔记(一百六十九)利用BottomNavigationView实现底部标签栏

    在Android Studio上创建官方默认的首屏标签页面很方便,首先右击需要添加标签栏的模块,在弹出的右键菜单中依次选择"New"--"Activity"-- ...

  10. android导航使用教程,android BottomNavigationView的简单使用教程

    每个android app都有BottomNavigationView导航,本人开发中刚刚使用到了BottomNavigationView,于是按照android developer官网特意做了一个符 ...

最新文章

  1. oracle归档日志是否启用,oracle归档日志满了,导致无法启动 ORA-03113
  2. idea 端口被占用
  3. TCP之三次握手四次挥手 1
  4. Random Forests
  5. [总结] 动态DP学习笔记
  6. myeclipse 8.5最新注册码(过期时间到2016年)
  7. git报错 ssh: Could not resolve hostname gitee.com:xxxxxx: Name or service not known fatal
  8. 深度学习TF—4.随机梯度下降
  9. setup factory 结束进程
  10. 深度剖析E680G应用二.MPKG
  11. 面试题 | ISP 图像处理算法工程师
  12. redis-trib.rb 下载
  13. Amaze UI的分页设计
  14. leetcode刷题笔记(1-10)持续更新中
  15. NVIDIA CUDA 高度并行处理器编程(九):并行模式:稀疏矩阵-向量乘法
  16. keepalived配置,解决vip无法ping通,虚拟服务器端口无法访问的问题
  17. NOIP2016 “西湖边超萌小松鼠” 模拟赛
  18. percona-toolkit检查主从一致性
  19. linux系统安装vasp,超算平台安装-CentOS7下安装vasp(gnu编译)
  20. Git之搭建Git服务器

热门文章

  1. 怎么禁用计算机usb驱动,电脑设置禁用U盘的四大方法|怎么让电脑无法使用U盘
  2. Linux 配置No module named enchant
  3. 《少有人走的路1:心智成熟的旅程》第一部分:自律 - 问题和痛苦
  4. 数据库系统概念-第六版 - charter 3 - 笔记 4
  5. java 比较excel文件,如何在Excel中使用宏比较两个Excel文件
  6. 【IoT】STM32 文件系统 fatfs 移植笔记详解
  7. 15000cd是多少流明_将lm换算为cd·sr (流明换算为cd·sr)
  8. 阶梯形矩阵(Echelon Matrix)
  9. mac如何打开/bin等目录
  10. python实现匿名发邮件_python 发送匿名邮件或无发件人