安卓底部导航栏几种实现方式,小白菜看了都说简单。

这篇具有很好参考价值的文章主要介绍了安卓底部导航栏几种实现方式,小白菜看了都说简单。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.安卓提供默认的导航方式

在创建项目时可以选择Bottom Navigation Activity进行创建。这种方式最为简单。
安卓底部导航栏几种实现方式,小白菜看了都说简单。
创建后生成的目录结构还是比较清晰的。
安卓底部导航栏几种实现方式,小白菜看了都说简单。
主布局即Activity由BottomNavigationView和fragment 构成。
BottomNavigationView 用于呈现底部导航栏,fragment组件 用于显示每个导航栏对应的Fragment
安卓底部导航栏几种实现方式,小白菜看了都说简单。
安卓底部导航栏几种实现方式,小白菜看了都说简单。
Activity中的代码就很魔性了,你压根看不到是怎么绑定的视图。
难道不是应该是

setContentView(R.layout.activity_main);

但是其为

private ActivityMainBinding binding;
 ...
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());

瓦特了就
原来ActivityMainBinding 可以实现视图和Activity自动绑定,其会根据所在类的类名去寻找对应与之名字匹配的layout并生成实例对象,有点类似于spring里面的自动注入。

setContentView(binding.getRoot());

getRoot方法就获得了实例的根视图了,即layout本身。
ActivityMainBinding 类的实例还可以直接通过id去操作视图内的子元素,这样可以减少很多组件的声明
例如在主视图中有个id为nav_view的底部导航栏组件,其可以通过binding.navView 取到该组件。这里要注意下划线命名方式到驼峰式命名的映射过程。

binding.navView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull @NotNull MenuItem item) {
                return false;
            }
        });

以配置的方式把导航栏配置到APP中,并绑定导航栏中的项对应的Fragemet页面,实现联动。

AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(
                R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications)
                .build();
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(binding.navView, navController);

这种是默认生成,注意理解就很容易上手了。

2.使用简单布局的方式实现

安卓底部导航栏几种实现方式,小白菜看了都说简单。
页面布局较为简单,只有底部的几个Textview和中间一个Layout容器
安卓底部导航栏几种实现方式,小白菜看了都说简单。
其主要实现原理是

 FragmentManager fm=getSupportFragmentManager();//获取Fragment的管理器
 FragmentTransaction transaction = fm.beginTransaction();// 开启一个事务

通过事务将fragement对象添加至用于显示的容器layout之中。

transaction.add(R.id.fragment_layout,new BlankFragment()).commit();//设置初始的fragment
textViewIndex.setBackgroundColor(R.color.design_default_color_error);

当底部导航栏发生点击时,替换layout容器中的fragement对象

transaction=fm.beginTransaction();// 一个事务只能commit一次 ,每次都需要重新赋值
fragment = new BlankFragment(); //创建第一个Fragment
transaction.replace(R.id.fragment_layout, fragment); //替换Fragment
transaction.commit(); //提交事务
textViewIndex.setBackgroundColor(R.color.design_default_color_error);

如此便实现了fragement和底部TextView的联动。
这种实现方式相对来说较好理解,但是性能嘛,一言难尽。

3.Viewpager+RadioGroup+Layout

radiogroup做底部导航栏,viewpager装几个layout作为切换的页面。 如此页面布局简单,滑动效果不错,就是逻辑全写在一个Activity里面 代码稍微繁琐
点击底部导航栏,页面跟着切换
页面可以左右滑动,底部导航栏跟着切换

主要看目录结构安卓底部导航栏几种实现方式,小白菜看了都说简单。
页面由一个Viewpager和底部的RadioGroup构成。
安卓底部导航栏几种实现方式,小白菜看了都说简单。
ViewPager中的一个页面是一个Layout,由一个xml文件形成。
安卓底部导航栏几种实现方式,小白菜看了都说简单。

4.ViewPager+Fragment+RadioGroup(推荐)

和3类似,但是相对于3来说,这种用法较为标准,fragement可以单独编写业务逻辑,而不用把所有逻辑全部放在Activity之中。
其目录结构如下图、相对于前面三种来说,小编更推荐使用这种
安卓底部导航栏几种实现方式,小白菜看了都说简单。

资源下载链接:

点击下载
https://download.csdn.net/download/qq_33183456/86247378
资源中总共五个小项目,四个导航栏项目,一个沉浸式引导页项目。
本来想分享到百度网盘的,但是网盘下载文件太慢了!索性就放在csdn上吧。而且网盘资料会丢失,就很shit!

关注小编不迷路哦文章来源地址https://www.toymoban.com/news/detail-400796.html

到了这里,关于安卓底部导航栏几种实现方式,小白菜看了都说简单。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 『Android基础入门』ViewPager+Fragment+BottomNavigationView实现底部导航

    👨‍🎓作者简介:一位喜欢写作,计科专业大三菜鸟 🏡个人主页:starry陆离 如果文章有帮到你的话记得点赞👍+收藏💗支持一下哦 在ViewPager与Fragment结合实现多页面滑动的学习上再进一步,记录一下ViewPager+Fragment+BottomNavigationView实现底部导航 1.复习ViewPager的用法 2.复习F

    2023年04月08日
    浏览(45)
  • uniapp 实现不同用户展示不同的tabbar(底部导航栏)

    目录 一、背景 源码地址:包含vue2和vue3版本:cheinlu/tabBar_demo_vue 二、效果展示 三、前置工作 四、创建tabbar组件 五、登录页面根据不同身份进行tabbar切换逻辑 六、问题拓展 最近在做一个uniapp开发的小程序遇到一个需求,希望不同用户登录后展示不同的tabbar页面,但是uniapp项

    2024年02月08日
    浏览(46)
  • Android Jetpack Compose之底部导航栏的实现

    写过一段Android jetpack compose 界面的小伙伴应该都用过Compose的脚手架 Scaffold ,利用它我们可以很快的实现一个现代APP的主流界面架构,即一个带顶部导航栏和底部导航栏的界面架构,我们基于这个架构可以快速的搭建出我们想要的页面效果。而今天的文章就是要介绍如何实现

    2024年03月23日
    浏览(48)
  • uni-app 实现凸起的 tabbar 底部导航栏

    效果图 在 pages.json 中设置隐藏自带的 tabbar 导航栏 新建一个 custom-tabbar.vue 自定义组件页面 底部安全区域的适配问题可查看:uni-app 苹果手机底部安全区域的适配问题 在 main.js 中引用组件 在要用到的页面中直接调用

    2024年02月07日
    浏览(54)
  • android 关于TabLayout联动ViewPager2 实现底部导航栏

    最近在心血来潮想写在app 不过我关于android可以说是0基础 在写底部导航栏的时候去问了大佬才知道TabLayout和ViewPager 花了两天才看懂... 这里只是简单介绍因为我不准备专门做安卓软件所以在学的途中很多地方没有认真记 本篇文章使用的代码是Java 这里官方是有将两个进行联动

    2024年01月25日
    浏览(41)
  • android : 底部导航栏的实现(使用ViewPager和BottomNavigationView)

      本案例中需要用的控件ViewPager和BottomNavigationView ViewPager:主要是页面的切换 Fragment:碎片(也就是每个页面的内容) BottomNavigationView:底部导航栏 非常简单,主要就是一个Viewpager和BottomNavigationView 先来说一下思路:BottomNavigationView底部导航栏   ViewPager+Fragment页面        

    2024年02月03日
    浏览(39)
  • 【Android入门到项目实战-- 11.2】—— 实现底部导航栏(RadioGroup+Fragment)

            效果如下,使用RadioGroup实现,不能左右滑动切换页面,适用于导航页里还有需要切换页面的场景,如果需要滑动效果,使用ViewPager实现。         以下示例按照图上实现,具体多少个页面,按需修改。         由于需要用到icon,提前下载好图标到drawable文件

    2024年02月10日
    浏览(76)
  • 优雅实现微信小程序动态tabBar,根据不同用户角色显示不同底部导航

    背景 在开发小程序过程中,有个需求是,小程序底部的tabBar需要根据不同用户角色显示不同底部导航。此时就需要用到自定义底部导航 custom-tab-bar。 上次发文是组合显示4个底部tabBar导航,很多小伙伴评论说组合超过5个怎么办。他们的需求总数超过5个了。 现在我在这里更新

    2024年02月14日
    浏览(36)
  • uniApp开发小程序自定义tabBar底部导航栏+tabBar中间凸起自定义样式实现

            先看效果是否可以满足你们,如果可以满足你只要一步一步照着做绝对没有错。         本人技术不佳,研究了一整天,全网的大佬们写的博客看的晕头转向,避免大伙再走弯路,跟着我以下步骤一点一点来绝对可以实现。         最终效果图: (如果你

    2024年02月04日
    浏览(49)
  • 小程序自定义底部导航 custom-tab-bar完整实现代码附效果图

    根据用户身份,动态设置底部的导航图标  实现步骤: 第一步 ,先配置:app.json里面的 tabBar 的 custom 设置为 true,如图:这里需要注意的是,自定义 tabBar 中包含的页面,在这里的 list 页面路径也必须得有,其它字段可以不设置 相关代码:   第二步 ,创建组件:在项目跟目

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包