我无法找出动态加载抽屉项目的任何可能解决方案,即根据导航组件架构 Android 中的要求隐藏和显示特定项目。原因是 Navigation 组件架构迫使我们通过在 xml 中添加项然后通过代码添加来手动膨胀 drawer。
如果有人有任何想法动态地执行此操作,例如从 API 获取项目并填充它们,请提供帮助。
注意:- 不知道的人请不要低估它或要求提供不必要的代码片段,因为这是一个描述性的事实,而不是任何代码问题。
答案 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() 来清除菜单并再次对其进行充气。