use*_*282 8 android android-navigation android-jetpack android-architecture-navigation
我想更改与导航组件一起使用的 ActionBar 中的向上按钮图标。我尝试了几种选择,例如:
supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_arrow_left_blue_24dp)
Run Code Online (Sandbox Code Playgroud)
在MainAcitivty或
app:navigationIcon="@drawable/ic_arrow_left_blue_24dp"
Run Code Online (Sandbox Code Playgroud)
在Toolbar.xml 文件中,似乎没有任何效果。
我有一个非常标准的设置
setSupportActionBar(appToolbar.toolbar)
setupActionBarWithNavController(this, navController)
Run Code Online (Sandbox Code Playgroud)
在MainActivity:onCreate方法中调用。
我希望
supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_arrow_left_blue_24dp)
Run Code Online (Sandbox Code Playgroud)
会起作用,因为例如ActionBar通过调用禁用标题:
supportActionBar?.setDisplayShowTitleEnabled(false)
Run Code Online (Sandbox Code Playgroud)
按预期工作,Fragment导航时标题未设置为名称。
更重要的是,我进行了一些调查,ActionBarOnDestinationChangedListener其中有一个调用将setNavigationIcon图标设置为DrawerArrowDrawable,这有点奇怪,因为我没有Drawer在我的设置中使用。
也改为:
setupWithNavController(toolbar, navController)
Run Code Online (Sandbox Code Playgroud)
不工作,因为ToolbarOnDestinationChangedListener也使用相同的DrawerArrowDrawable.
我找到了答案。我检查了导航组件的问题跟踪器,现在似乎不可能在没有解决方法的情况下更改它:
https://issuetracker.google.com/u/1/issues/121078028
很高兴它仍然是可能的,我们只需要在OnDestinationChangedListener那里实现和更改图标,因为它在setNavigationIconin之后被调用AbstractAppBarOnDestinationChangedListener。这是一个代码:
navController.addOnDestinationChangedListener { _, _, _ ->
supportActionBar?.setHomeAsUpIndicator(R.drawable.ic_arrow_left_blue_24dp)
}
Run Code Online (Sandbox Code Playgroud)
您甚至可以为不同的目的地使用不同的图标。
这是临时解决方案,因为此功能尚不存在。我正在使用1.0.0-alpha09导航组件的版本。
| 归档时间: |
|
| 查看次数: |
2234 次 |
| 最近记录: |