如何禁用工具栏导航按钮动画

How to disable toolbar navigation button animation

我正在使用带导航 UI 的工具栏,当从 top-level 目的地导航到任何其他目的地时,导航按钮显示为向上按钮并且标题向右移动。 单击返回时,工具栏导航图标会隐藏,标题会返回到工具栏的开头,并带有幻灯片动画。

 var appBarConfiguration = AppBarConfiguration.Builder(
        setOf(
            R.id.homeFragment,
            R.id.moreOptionsFragment,
            R.id.accountDetailsFragment
        )
    ).build()
    navController = findNavController(R.id.navHostMain)
    binding.bottomNavView.setupWithNavController(navController)
    NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration)[enter image description here][1]

如何在返回 top-level 片段时禁用标题 上的动画?

如果您在 activity 中使用工具栏,您可以通过在 activity 中调用 setSupportActionBar 将工具栏设置为支持操作栏,然后使用导航设置操作栏通过调用 NavigationUI.setupActionBarWithNavController.

控制器

你得到动画是因为 NavigationUI 使用 ToolbarOnDestinationChangedListener class 如果你用工具栏设置它,这个 class 有以下方法:

@Override
    protected void setNavigationIcon(Drawable icon,
            @StringRes int contentDescription) {
        Toolbar toolbar = mToolbarWeakReference.get();
        if (toolbar != null) {
            boolean useTransition = icon == null && toolbar.getNavigationIcon() != null;
            toolbar.setNavigationIcon(icon);
            toolbar.setNavigationContentDescription(contentDescription);
            if (useTransition) {
                TransitionManager.beginDelayedTransition(toolbar);
            }
        }
    }

如您所见,此方法使用 TransitionManager 动画移除导航图标,但它也会影响标题。我不认为你可以禁用它。