使用带有喷气背包导航组件的导航抽屉时如何更改工具栏图标(汉堡图标)
Posted
技术标签:
【中文标题】使用带有喷气背包导航组件的导航抽屉时如何更改工具栏图标(汉堡图标)【英文标题】:how to change toolbar icon (hamburger icon) when using navigation drawer with jetpack navigation component 【发布时间】:2020-11-22 19:25:43 【问题描述】:我正在使用jetpack导航组件构建一个导航抽屉,我想更改工具栏的汉堡图标,我尝试了很多类似下面的解决方案但它们不起作用
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】:您可以使用addOnDestinationChangedListener
:
navController.addOnDestinationChangedListener controller, destination, arguments ->
if (destination.id == R.id.nav_xxxx)
supportActionBar?.setHomeAsUpIndicator(R.drawable.xxxx)
【讨论】:
终于成功了 虽然这很神奇,但在语义上却没有意义。我来自网络世界,我会理解这是否隐含地是 android 世界中的“DOM 就绪”一种技巧。是吗? 这对我有用,但为什么如果我们把它放在 onCreate() 上它不起作用?以上是关于使用带有喷气背包导航组件的导航抽屉时如何更改工具栏图标(汉堡图标)的主要内容,如果未能解决你的问题,请参考以下文章