android - 使用片段时是否在 activity_main.xml 中使用 DrawerLayout?
问题描述
我正在构建一个带有 android jetpack 导航和片段的应用程序。我想在我的应用程序中包含一个导航抽屉,但我不确定我将把 DrawerLayout 标签放在哪里。我希望大多数(但不是全部)片段都可以访问导航抽屉。我是把这个标签放在 activity_main.xml 中还是放在我想在其中包含导航抽屉的每个布局文件中?谢谢!
解决方案
在你activity_main.xml
的主布局中用DrawerLayout
. 由于您希望它可以从任何地方访问,因此您无需添加addOnDestinationChangedListener
navController。但是,如果您不想要特定片段,则必须添加它并设置条件以检查 NavDestination 并将其锁定如下
navController.addOnDestinationChangedListener { nc: NavController, nd: NavDestination, _: Bundle? ->
if (nd.id == nc.graph.startDestination) {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED)
} else {
drawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED)
}
}
推荐阅读
- python - 任何人都可以帮助解释为什么这个 Python 代码输出:[0]
- javascript - 三个 JS 平面缓冲区几何中的网格位置未更新
- azure-iot-hub - 卡在网络 azure-iot-edge-dev 是外部的,正在跳过
- android-studio - Android北极狐无限gradle构建运行
- r - 使用 conditionalPanel() 和 fileInput() 根据单选按钮输入不同的文件类型
- typescript - 一些接口(例如IUser 或IData)使用“I”作为接口名称的开头,为什么?
- python-3.x - 使用 Selenium 选择单选按钮
- c - 使用 Jansson API 的 json 中的多行“值”
- javascript - 在这个 svg 滚动动画中使用粘性导航
- spring-vault - 将 Spring Cloud Vault 和 ConfigData API 与多个配置文件一起使用