导航组件架构 Android

时间:2021-01-22 07:32:44

标签: android kotlin android-jetpack

我无法找出动态加载抽屉项目的任何可能解决方案,即根据导航组件架构 Android 中的要求隐藏和显示特定项目。原因是 Navigation 组件架构迫使我们通过在 xml 中添加项然后通过代码添加来手动膨胀 drawer。

如果有人有任何想法动态地执行此操作,例如从 API 获取项目并填充它们,请提供帮助。

注意:- 不知道的人请不要低估它或要求提供不必要的代码片段,因为这是一个描述性的事实,而不是任何代码问题。

1 个答案:

答案 0 :(得分:0)

您可以动态构建菜单项。

第一步 - 在您的活动中找到您的导航视图

private lateinit var navView: NavigationView
...
navView = findViewById(R.id.nav_view)

第二步 - 用这样的项目扩充导航视图

        pages.forEach { page ->
            navView.menu.add(0, page.navId, 0, page.name)
                .apply {
                    setNavItemIcon(this, page.faIcon, page.customIcon)
                    isCheckable = true
                }
        }

        navView.menu.setGroupCheckable(0, true, true)

其中 pages - 导航项模型列表,从 db(在您的情况下为 API)获取,'page' 是菜单项的模型。

第三步 - 使用 setNavigationItemSelectedListener 处理点击

navView.setNavigationItemSelectedListener {
    onMenuItemSelected(it, pages)
}

此外,您可能还需要使用 navView.menu.clear() 来清除菜单并再次对其进行充气。

相关问题