android使用BottomNavigationView与NavController来实现底部导航栏
16lz
2021-01-25
1.主布局
<?xml version="1.0" encoding="utf-8"?>
BottomNavigationView:底部导航视图,通过menu指定导航菜单,即导航ID、图标、标题
fragment:导航切换的Fragment占位符,通过navGraph指定了导航规则,即ID与Fragment实现类的映射
2.导航菜单布局
<?xml version="1.0" encoding="utf-8"?>
可以看到每个导航菜单包含了导航的ID、图标、标题
3.导航规则
<?xml version="1.0" encoding="utf-8"?>
每个导航规则都包含了导航ID与一个Fragment类的映射,此处的ID与菜单的ID一致
4.主Activity
/** * 主页面,用于分类查看功能 */public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /* 主页布局 */ setContentView(R.layout.activity_main); /* 获取底部导航栏视图 */ BottomNavigationView navView = findViewById(R.id.nav_view); /* AppBar配置 */ AppBarConfiguration appBarConfiguration = new AppBarConfiguration.Builder(R.id.navigation_home, R.id.navigation_dashboard, R.id.navigation_notifications).build(); /* 从Fragment获取导航控制器,navGraph定义了导航规则 */ NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); /* 为AppBar设置导航控制器,监听导航改变事件,修改标题 */ NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration); /* 为视图设置导航控制器,即监听视图的点击事件 */ NavigationUI.setupWithNavController(navView, navController); }}
NavController为导航控制器,里面包含了导航规则,是导航的中枢
NavigationUI.setupActionBarWithNavController,设置NavController导航改变的监听事件,修改页面标题栏
NavigationUI.setupWithNavController,设置触发导航改变的事件,当底部导航栏被点击时触发导航
更多相关文章
- Android材料设计兼容函数库(Design Support Library)(I)导航视图(Navi
- Android(安卓)ListView适配器BaseAdapter中getItemViewType需要
- [有梦想的IT人] Android优秀的动画库
- Android(安卓)OOM-Heap,MAT工具检测内存泄露
- Android自定义控件之基本原理(一)
- Android(安卓)studio APP开发 ListView控件的建立和使用
- Android数据读取之Sqlite数据库操作
- Android实现dialog的3D翻转
- Android: StrictMode介绍