【问题标题】: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);
}

【问题讨论】:

    标签: android navigation-drawer android-jetpack hamburger-menu android-jetpack-navigation


    【解决方案1】:

    您可以使用addOnDestinationChangedListener

        navController.addOnDestinationChangedListener { controller, destination, arguments ->
            if (destination.id == R.id.nav_xxxx){
                supportActionBar?.setHomeAsUpIndicator(R.drawable.xxxx)
            }
        }
    

    【讨论】:

    • 终于成功了
    • 虽然这很神奇,但在语义上却没有意义。我来自网络世界,我会理解这是否隐含地是 android 世界中的“DOM 就绪”一种技巧。是吗?
    • 这对我有用,但为什么如果我们把它放在 onCreate() 上它不起作用?
    猜你喜欢
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 2016-08-02
    相关资源
    最近更新 更多