BottomNavigationView与Navigation使用
目录
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使用相关推荐
- Android 官方架构组件 Navigation 使用详解
前言 前段时间,我在做项目开发的时候对Fragment的管理遇到几个小问题,总觉得在现阶段封装好的Fragment管理器不太优雅.这成为我下决心学习Jetpack在很早之前推出的Navigation库 ...
- WanJetpack项目:用Jetpack实现玩Android,追求最官方的实现方式
项目简介 慕灵小说网 https://www.2561.info 玩Android demo.用Jetpack MVVM开发架构.单Activity多Fragment项目设计,项目结构清晰,代码简洁优 ...
- Android Navigation与BottomNavigationView实现底部导航栏
底部导航栏 一.效果图 二.实现 1.创建Fragment以及布局文件 2.添加FragmentContainerView和BottomNavigationView两个控件 3.配置xml资源文件 4 ...
- Android Jetpack 学习之Navigation、BottomNavigationView
先上效果图: Navigation组件,也可以理解成FragmentNavigation.它提供了多Fragment之间的转场.栈管理,帮助我们可以更轻松的使用Fragment.在抽屉式导航栏.底部导 ...
- BottomNavigationView+Navigation 添加底部导航菜单切换时的fragment过渡动画animation
Navigation默认的透明度动画,只有300毫秒,通过BottomNavigationView切换fragment时,几乎看不到过渡动画的效果,开始还以为没有动画. 开始在网上查找相关资料,最后找 ...
- Android Jetpack组件之Navigation使用-源码
1.前言 最近简单看了下google推出的框架Jetpack,感觉此框架的内容可以对平时的开发有很大的帮助,也可以解决很多开发中的问题,对代码的逻辑和UI界面实现深层解耦,打造数据驱动型UI界面. A ...
- BottomNavigationView+ViewPager+Fragment仿微信底部导航栏
目标: 要实现的界面如下: 此时,我们需要采用BottomNavigationView+ViewPager+Fragment,一点点的说起.首先要在app/build.gradle里添加: imple ...
- Android—Navigation的使用
Navigation是Fragment的一个容器,用于管理Fragment. 我们可以通过它实现Fragment的跳转以及传值等操作. 1.先写Fragment的xml文件 <?xml vers ...
- Android开发笔记(一百六十九)利用BottomNavigationView实现底部标签栏
在Android Studio上创建官方默认的首屏标签页面很方便,首先右击需要添加标签栏的模块,在弹出的右键菜单中依次选择"New"--"Activity"-- ...
- android导航使用教程,android BottomNavigationView的简单使用教程
每个android app都有BottomNavigationView导航,本人开发中刚刚使用到了BottomNavigationView,于是按照android developer官网特意做了一个符 ...
最新文章
- oracle归档日志是否启用,oracle归档日志满了,导致无法启动 ORA-03113
- idea 端口被占用
- TCP之三次握手四次挥手 1
- Random Forests
- [总结] 动态DP学习笔记
- myeclipse 8.5最新注册码(过期时间到2016年)
- git报错 ssh: Could not resolve hostname gitee.com:xxxxxx: Name or service not known fatal
- 深度学习TF—4.随机梯度下降
- setup factory 结束进程
- 深度剖析E680G应用二.MPKG
- 面试题 | ISP 图像处理算法工程师
- redis-trib.rb 下载
- Amaze UI的分页设计
- leetcode刷题笔记(1-10)持续更新中
- NVIDIA CUDA 高度并行处理器编程(九):并行模式:稀疏矩阵-向量乘法
- keepalived配置,解决vip无法ping通,虚拟服务器端口无法访问的问题
- NOIP2016 “西湖边超萌小松鼠” 模拟赛
- percona-toolkit检查主从一致性
- linux系统安装vasp,超算平台安装-CentOS7下安装vasp(gnu编译)
- Git之搭建Git服务器
热门文章
- 怎么禁用计算机usb驱动,电脑设置禁用U盘的四大方法|怎么让电脑无法使用U盘
- Linux 配置No module named enchant
- 《少有人走的路1:心智成熟的旅程》第一部分:自律 - 问题和痛苦
- 数据库系统概念-第六版 - charter 3 - 笔记 4
- java 比较excel文件,如何在Excel中使用宏比较两个Excel文件
- 【IoT】STM32 文件系统 fatfs 移植笔记详解
- 15000cd是多少流明_将lm换算为cd·sr (流明换算为cd·sr)
- 阶梯形矩阵(Echelon Matrix)
- mac如何打开/bin等目录
- python实现匿名发邮件_python 发送匿名邮件或无发件人