如何在使用Jetpack Navigation组件的导航抽屉时更改工具栏图标(汉堡图标)

5

我正在使用Jetpack Navigation组件来构建导航抽屉,我想要更改工具栏的汉堡图标,我尝试了很多解决方案,像下面这样,但它们都不起作用。

app:navigationIcon="@drawable/menu"

同样也

getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setHomeAsUpIndicator(R.drawable.menu);

这是我的代码

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    setSupportActionBar(toolbar)
    navController=findNavController(R.id.nav_host_fragment)
    appBarConfiguration=AppBarConfiguration(setOf(R.id.nav_acceuil,R.id.nav_notifications,R.id.nav_gerer,R.id.nav_deconnexion),drawer_layout)
    setupActionBarWithNavController(navController,appBarConfiguration)
    nav_view.setupWithNavController(navController);
}
1个回答

6
你可以使用addOnDestinationChangedListener来监听目标变化:
    navController.addOnDestinationChangedListener { controller, destination, arguments ->
        if (destination.id == R.id.nav_xxxx){
            supportActionBar?.setHomeAsUpIndicator(R.drawable.xxxx)
        }
    }

1
终于成功了,谢谢! - Blind Side
虽然这个方法神奇地工作了,但从语义上讲并没有意义。我来自于Web世界,如果这在Android世界中隐含地表示“DOM准备就绪”的技巧,那我也能理解。它是吗? - Hiro
它对我来说有效,但为什么如果我们将其放在onCreate()上,它就不起作用了? - Aldan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接