【问题标题】:Android Navigation Component remove toolbar animationAndroid Navigation Component 移除工具栏动画
【发布时间】:2020-02-10 23:14:55
【问题描述】:

当我使用带有工具栏的导航组件时,如何删除工具栏动画:

NavigationUI.setupWithNavController(toolbar, findNavController(R.id.nav_host_fragment))

在每个片段中,我都有自定义菜单(和setHasOptionsMenu(true))。在findNavController().popBackstack() 工具栏菜单项所做的每个片段事务上都有丑陋的过渡动画。 如果我删除setupWithNavController,动画就会消失,但我需要它。

【问题讨论】:

  • 你能解决这个问题吗?这些动画看起来很糟糕
  • 不,我没有找到任何解决方案:/
  • 太奇怪了。这个问题怎么能被忽视这么久?对我来说,它还在第一个屏幕上显示错误的工具栏标题,直到我回到它一次。

标签: android android-jetpack


【解决方案1】:

我发现如果您调用 Activity.setupActionBarWithNavControllerNavigationUI.setupActionBarWithNavController 而不是工具栏特定的函数,则不会获得这些动画。

如果您使用这种方法,您还必须覆盖 onSupportNavigateUp 来处理向上按钮:

override fun onSupportNavigateUp(): Boolean {
    return navController.navigateUp() || super.onSupportNavigateUp()
}

如果您使用工具栏,请不要忘记调用setSupportActionBar(toolbar) 将工具栏设为您的默认操作栏。

【讨论】:

  • 如果你使用androidx.appcompat.widget.Toolbar它不起作用,因为它调用setActionBar
  • @Shynline 你只需要打电话给setSupportActionbar(toolbar),不是吗?
  • @FlorianWalther 这可行,但单击后退按钮不会触发 backpress 事件。可以做什么?
  • 调用活动?.onBackPressedDispatcher?.addCallback(viewLifecycleOwner,
  • @Rockin 您需要覆盖onSupportNavigateUp,正如我在编辑后的答案中所示。感谢您指出这一点。
猜你喜欢
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多