不显示自定义导航图标 // Jetpack Navigation

Custom navigation icon not displayed // Jetpack Navigation

我正在尝试使用自定义后退导航而不是使用默认后退箭头。我想使用取消图标:

通过在我的 XML 文件中使用 app:navigationIcon="@drawable/ic_cancel_white_24dp"

但是,当我 运行 应用程序时,图标永远不会显示。相反,它以黑色显示默认的后退箭头:

我正在使用 NAV 控制器和 AppBarConfiguration 来设置工具栏(因为我拥有的每个片段的工具栏样式都不同):

private fun setUpActionBar() {
   val navController = findNavController()
   val appBarConfiguration = AppBarConfiguration(navController.graph)
   binding.toolbar.setupWithNavController(navController, appBarConfiguration)
   binding.toolbar.inflateMenu(R.menu.menu)
}

如何用自定义图标替换默认箭头?另外-为什么默认箭头是黑色的?这是主题问题吗?

您可以使用addOnDestinationChangedListener在您的设置方法后设置您自己的图标。

navController.addOnDestinationChangedListener { _, destination, _ ->
   if(destination.id == R.id.xxxx) {
       toolbar.setNavigationIcon(R.drawable.xxxx)
   } else {
       //
   }
}

关于向上图标的颜色检查这个
只需使用 android:theme 属性覆盖 Toolbar 中的 colorOnPrimarycolorControlNormal