Android快速开发模板:首页-BottomNavigationView+ViewPager

💡 原文中文,约7000字,阅读约需17分钟。
📝

内容提要

本文介绍了如何使用BottomNavigationView + ViewPager来创建底部导航栏结构的页面。文章提供了完整的代码示例,包括文本、图标、字体、颜色等的定义和布局。同时还介绍了Fragment的使用和页面切换的实现。

🔎

延伸解读

未读红点功能的实现限制

文章明确指出,BottomNavigationView 本身较难实现底部导航栏的未读红点和未读数量功能。作者基于实践和查阅资料得出这一结论,并建议有此类需求的开发者考虑使用 BottomNavigationBar、TabLayout 或开源框架 BottomNavigation。这提醒读者在技术选型时需评估功能需求,避免后期改造困难。

选中与未选中状态的样式定制

通过 itemTextAppearanceActive 和 itemTextAppearanceInactive 属性,可以分别定义选中和未选中状态下的文字字体、大小和颜色。图标颜色则通过 itemIconTint 配合 selector 实现。文章示例中,选中时字体为 sans-serif-black、16sp、蓝色,未选中为 sans-serif-thin、12sp,这种差异化设计能增强导航的视觉反馈。

ViewPager 与导航栏的联动机制

代码中通过 ViewPager 的 addOnPageChangeListener 监听页面切换,在 onPageSelected 中更新 BottomNavigationView 的选中项;同时,导航栏的 setOnNavigationItemSelectedListener 中根据菜单项 ID 设置 ViewPager 的当前页。这种双向同步确保了滑动页面和点击导航栏时状态一致,是底部导航结构的核心交互逻辑。

Fragment 管理与页面缓存策略

Activity 中初始化了三个 CommonFragment 实例,并通过 FragmentPagerAdapter 提供给 ViewPager。设置 offscreenPageLimit 为 Fragment 数量,可以预先加载所有页面,避免切换时重新创建,但会占用更多内存。开发者需根据页面复杂度和性能需求权衡是否使用此策略。

❓

Q&A

如何使用BottomNavigationView和ViewPager创建底部导航栏?

可以通过结合BottomNavigationView和ViewPager来实现底部导航栏,具体步骤包括定义文本、图标、菜单和样式,并在Activity中配置Fragment和ViewPager。

这篇文章提供了哪些代码示例?

文章提供了完整的代码示例,包括文本、图标资源文件、菜单、样式以及Fragment和Activity的实现示例。

如何在BottomNavigationView中实现未读红点和未读数量功能?

文章未实现未读红点和未读数量功能,建议使用BottomNavigationBar、TabLayout或开源框架BottomNavigation来满足该需求。

Fragment在ViewPager中的作用是什么?

Fragment用于在ViewPager中显示不同的页面内容,允许用户在底部导航栏中切换不同的Fragment。

如何在AndroidManifest.xml中配置Activity?

在AndroidManifest.xml中,需要配置Activity的名称、屏幕方向、导出属性等相关属性,以确保Activity正常运行。

BottomNavigationView的常用属性有哪些?

常用属性包括文字和图标的颜色、大小、背景色、点击后的水波纹颜色等,可以通过selector来控制选中和未选中的样式。

🏷️

标签

➡️

继续阅读