android - 导航组件,控制何时显示汉堡包或返回图标

标签 android kotlin navigation-drawer android-jetpack android-architecture-navigation

我有以下 Activity

class MainActivity : AppCompatActivity() {

private lateinit var drawerLayout: androidx.drawerlayout.widget.DrawerLayout

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.main_activity)

    drawerLayout = drawer_layout

    val navController = Navigation.findNavController(this, R.id.fragment_main_navHost)

    setSupportActionBar(toolbar)

    NavigationUI.setupActionBarWithNavController(this, navController, drawerLayout)
    navView_main.setupWithNavController(navController)
}

override fun onSupportNavigateUp(): Boolean {
    return NavigationUI.navigateUp(drawerLayout,
        Navigation.findNavController(this, R.id.fragment_main_navHost))
}

override fun onBackPressed() {
    if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
        drawerLayout.closeDrawer(GravityCompat.START)
    } else {
        super.onBackPressed()
    }
}

您可以看到它与导航图相关联,我正在使用抽屉导航。当我浏览抽屉中的项目时,我想保留汉堡图标,并且仅在单击 fragment 或弹出窗口中的项目时将其更改为上/后退按钮,并确保系统的行为反射(reflect)了什么用户期望基于显示的图标。有可能吗

最佳答案

要控制AppBar导航上/后显示的时间需要做以下操作

1- 创建 AppBarConfiguration 并将顶级目的地和抽屉布局传递给它

    appBarConfiguration = AppBarConfiguration(
        setOf(
            R.id.dest_one,
            R.id.dest_two
        ),
        drawerLayout
    )

2- 告诉 AppBar 配置和导航。这将有助于显示标题并显示向上箭头或抽屉菜单图标

setupActionBarWithNavController(navController, appBarConfig)

3- 最后覆盖 onOptionsItemSelected 和 onSupportNavigateUp 以及导航组件扩展,以告知 AppBar 的行为方式

    override fun onOptionsItemSelected(item: MenuItem)= item.onNavDestinationSelected(findNavController(R.id.my_nav_host_fragment))
        || super.onOptionsItemSelected(item)


override fun onSupportNavigateUp() = findNavController(R.id.my_nav_host_fragment).navigateUp(appBarConfiguration)

引用 Google 代码实验室导航 Navigation Codelab

关于android - 导航组件,控制何时显示汉堡包或返回图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52172111/

相关文章:

java - 移动企业应用平台(MEAP)有推荐吗?

Kotlin 无法访问 Java 可以访问的 Java 库类

android - ExpandableListView 和 NavigationDrawer

android - 操作栏,带 ListView 的抽屉导航

android - 我可以使用字符串资源在 Jetpack Navigation XML 文件中生成深层链接吗?

android - 我应该从哪个类调用 locationManger.removeUpdates()?

安卓工作室错误 : Unable to create project

android - kotlin,如何使 hashMap 可打包

Kotlin 扩展函数 - 编译器无法推断 nullable 不为 null

android - 如何设置抽屉导航从右到左打开