文章目录

  • 常见的底部导航栏
  • 实现步骤
    • 1.底部导航栏样式
    • 2.新建四个fragment组件
      • 四个fragement对应的layout
    • 3.建议navigation布局文件(至关重要)
    • 4.activity
      • 布局文件
      • 内容(绑定Navigation与BottomNavigationView)

常见的底部导航栏

动态效果

实现步骤

1.底部导航栏样式

我们应该在项目的res文件夹下新建一个menu文件夹,用来装menu布局文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><itemandroid:id="@+id/navigation_home"android:icon="@drawable/international_1"android:title="主页" /><itemandroid:id="@+id/navigation_edit"android:icon="@drawable/edit_0"android:title="发布" /><itemandroid:id="@+id/navigation_view"android:icon="@drawable/view_0"android:title="关注" /><itemandroid:id="@+id/navigation_user"android:icon="@drawable/user_0"android:title="我的" />
</menu>

2.新建四个fragment组件

每一个fragment的组件内容相同

四个fragement对应的layout

四个fragment布局文件的内容也相同,写上内容以区别是哪个页面

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/text_home"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginStart="8dp"android:layout_marginTop="8dp"android:layout_marginEnd="8dp"android:textAlignment="center"android:textSize="20sp"app:layout_constraintEnd_toEndOf="parent"app:layout_constraintStart_toStartOf="parent"app:layout_constraintTop_toTopOf="parent"android:text="this is homebar"/>
</androidx.constraintlayout.widget.ConstraintLayout>

3.建议navigation布局文件(至关重要)

这个文件指定了页面上显式那些fragment组件

在项目res下新建一个文件夹专门用来存放此文件

id取值一定要与底部导航栏样式里面指定的ID相同,因为android自动根据底部按钮的ID来绑定按钮与fragment

<?xml version="1.0" encoding="utf-8"?>
<navigation 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:id="@+id/mobile_navigation"app:startDestination="@+id/navigation_home"><fragmentandroid:id="@+id/navigation_home"android:name="cn.liuhao.test.fragments.HomeFragment"tools:layout="@layout/fragment_home" /><fragmentandroid:id="@+id/navigation_view"android:name="cn.liuhao.test.fragments.ViewFragment"tools:layout="@layout/fragment_view" /><fragmentandroid:id="@+id/navigation_edit"android:name="cn.liuhao.test.fragments.EditFragment"tools:layout="@layout/fragment_eidt" /><fragmentandroid:id="@+id/navigation_user"android:name="cn.liuhao.test.fragments.UserFragment"tools:layout="@layout/fragment_user" />
</navigation>

4.activity

布局文件

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns: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:paddingTop="?attr/actionBarSize"><!-- 底部导航栏 --><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="?android:attr/windowBackground"app:layout_constraintBottom_toBottomOf="parent"app:layout_constraintLeft_toLeftOf="parent"app:layout_constraintRight_toRightOf="parent"app:menu="@menu/bottom_nav_menu" /><!-- 页面中显式fragment的容器--><fragmentandroid:id="@+id/nav_host_fragment"android:name="androidx.navigation.fragment.NavHostFragment"android:layout_width="match_parent"android:layout_height="match_parent"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" /></androidx.constraintlayout.widget.ConstraintLayout>

内容(绑定Navigation与BottomNavigationView)

public class Main2Activity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main2);// 获取页面上的底部导航栏控件BottomNavigationView navView = findViewById(R.id.nav_view);// 配置navigation与底部菜单之间的联系// 底部菜单的样式里面的item里面的ID与navigation布局里面指定的ID必须相同,否则会出现绑定失败的情况AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(R.id.navigation_home,R.id.navigation_edit,R.id.navigation_view,R.id.navigation_user).build();// 建立fragment容器的控制器,这个容器就是页面的上的fragment容器NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);// 启动NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);NavigationUI.setupWithNavController(navView, navController);}}

android底部导航栏相关推荐

  1. android 固定底部导航,如何设置android底部导航栏位置固定在android

    请帮我设置底部导航栏位置固定在底部, ,因为我在输入editText字段时遇到问题,底部导航栏向上移动并覆盖其他领域如何设置android底部导航栏位置固定在android 代码: xmlns:and ...

  2. android fragment 底部菜单栏,一句话搞定Android底部导航栏,一键绑定Fragment、ViewPager...

    现在大多数App都会用到底部导航栏,比如常见的聊天工具QQ.微信.购物App等等,有了底部导航栏,用户可以随时切换界面,查看不同的内容.它的实现方式也很多,以前大多使用TabHost来实现,但是现在我 ...

  3. 转载:Android底部导航栏,三种风格和实现

    原文出处 标题:Android底部导航栏,三种风格和实现 作者:阿飞__ 原文链接:Android底部导航栏,三种风格和实现_阿飞__的博客-CSDN博客_android导航栏 一.效果图展示 如果动 ...

  4. Android底部导航栏的三种风格实现

    一.效果图展示 如果动图没有动的话,也可以看下面这个静态图 以下挨个分析每个的实现,这里只做简单的效果展示,大家可以基于目前代码做二次开发. 二.BottomNavigationView 这是 Goo ...

  5. Android底部导航栏切换页面填坑

    ** Android底部导航栏切换页面填坑 ** 这个效果的实现关键点就是给选项赋予两种状态,focused和normal,在主程序中用监听判断是否被选中,就给被选中的选项设focused为true, ...

  6. Android底部导航栏最常用的两种写法

    先来看看底部导航栏的效果 Android 底部导航栏有很多种写法,例如: RadioGroup , Tablayout, TabHost  , LinearLayout + ImageView + T ...

  7. Android底部导航栏+消息提醒

    Android底部导航栏+消息提醒 最近想在网上找一些Android底部导航栏切换并能提供消息提醒的案例,虽然有很多案例但都不是我想要的.我就开始自己瞎研究了,废话不多说了,直接上代码. 1.先创建一 ...

  8. Android 底部导航栏添加消息数目提示

    效果图 写一篇短小精悍,好用的知识积累吧.开发中时常会出现信息提醒,新内容提示等等一堆问题.其实就是在各种控件或者是item上面加"小圆点".网上一搜一大堆...但是感觉说的好多. ...

  9. android底部导航栏_Kotlin实现底部导航栏

    在我们开发app过程中,免不了使用底部导航栏,所以今天我们就来看看怎么样用kotlin实现底部导航栏. 新建项目 新建一个KotlinBottomNavigationDemo项目. 在gradle中添 ...

  10. android底部导航栏软件,三步搞定android应用底部导航栏

    很多android应用底部都有一个底部导航栏,方便用户在使用过程中随意切换.目前常用的做法有三种:一种是使用自定义tabHost,一种是使用activityGroup,一种是结合FrameLayout ...

最新文章

  1. 4 用python进行OpenCV实战之图像变换1(平移)
  2. 分布式经典书籍--深入分布式缓存 从原理到实践
  3. python的窗口处理模块_Python tkinter模块弹出窗口及传值回到主窗口操作详解
  4. 最没节操的地下匿名社交创始人,可以拯救Google+?
  5. Exchange 2007 申请多域名证书
  6. ComboBox 强制转换为大写的方法
  7. 2021安徽省计算机应用基础,安徽省高等教育自学考试2021年4月课程考试时间安排表.pdf...
  8. 信息学奥赛C++语言:尼克的岁数
  9. 事务相关命令 mysql
  10. io python 读取pdf_python自动化办公之 Python 解析 PDF
  11. 一周第二次课(3月20日)1.6/1.7 配置IP 1.8 网络问题排查
  12. [转]MySQL和SQLServer的比较
  13. 数据挖掘数据的资料分享
  14. ASPNET--Basic Info
  15. 新联想ISG聚焦新IT,全要素推进企业智能化转型
  16. android 百度基站定位服务器,Android基站定位原理及实现代码
  17. linux下nfs安装配置
  18. 龙卷风路径_“龙卷风”:预判路径 减轻灾害
  19. 某网站cookie加密黑盒调用与算法还原
  20. 北大惠普金融指数-匹配企业绿色创新指数2011-2020年:企业名称、年份、行业分类等多指标数据

热门文章

  1. python播放音乐同步歌词_Python点阵字玩转动态歌词
  2. 校招大学生简历制作模板(ps:程序员简历)
  3. 3850x5服务器装系统,System x 3850 X5 系统安装测试报告
  4. 安装部署VMware vSphere 为IBM x3850 X5服务器安装配置VMware ESXi
  5. 小米笔记本linux系统下载,传小米笔记本不用Win10用Linux系统 推12.5寸/13.3寸两款...
  6. python 分割不等长字符串表格_python如何将字符串等长分割
  7. OPPO手机完美安装Kingroot实现一键root
  8. Visio 使用心得
  9. java ts视频文件合并
  10. 几款非常好用并免费的项目进度管理软件