6

我正在实现 NavigationComponent 与 BottomNavigationView 相结合的过程中,我注意到工具栏中显示了所有片段目的地的后退箭头,但startDestination导航图中指定的片段目的地除外。

我能够找到的此实现的所有示例都显示出类似的行为。在我看来,隐藏 BottomNavigationView 的每个相关片段的后退箭头似乎是一种更自然的设计,(在工具栏中点击后退箭头以从选项卡 2 导航到选项卡 1 对我来说感觉很奇怪,我以前从未见过这种情况) .

有关示例以及我想要实现的目标,请参见下图。有什么办法可以做到这一点?在此处输入图像描述

4

4 回答 4

25

如果您使用的是AppBarConfiguration应该看起来像这样。

val appBarConfiguration = AppBarConfiguration(
            setOf(
                R.id.homeFragment,
                R.id.dashboardFragment,
                R.id.notificationsFragment
            )
        )

setupActionBarWithNavController(navController!!, appBarConfiguration!!)

这意味着您的所有片段都是顶级目的地。

注意,当您回击时,您将退出应用程序(或者如果配置为第一个片段,BottomSheet例如,您会在 s 中获得此行为)。因此,如果您需要另一种情况,您应该onBackPressed为每个片段配置

于 2019-06-19T14:42:04.667 回答
3

像这样在kotlin

    navController.addOnDestinationChangedListener { _, destination, _ ->
        if (destination.id == R.id.searchFragment) {
            binding.toolbar.navigationIcon = null
        } else {
        }
    }
于 2020-12-31T23:28:27.443 回答
3

删除箭头返回图标的简单方法是使目标更改侦听器,如果目标 id == R.id.fragmentYouWantRemoveArrawBack setNavigationIcon(null);

前任:

navController.addOnDestinationChangedListener(new NavController.OnDestinationChangedListener() {
        @Override
        public void onDestinationChanged(@NonNull NavController controller,
                                         @NonNull NavDestination destination,
                                         @Nullable Bundle arguments) {

            if (destination.getId() == R.id.myChiehkFrament) {
                findViewById(R.id.chat_toolbar_constraintL).setVisibility(View.VISIBLE);
                toolbar.setNavigationIcon(null);
            } else {
                findViewById(R.id.chat_toolbar_constraintL).setVisibility(View.GONE);
            }
        }});
于 2020-07-14T23:23:09.023 回答
2

用于 getActionBar().setDisplayHomeAsUpEnabled(false)从工具栏中删除主页/返回按钮

于 2019-06-19T14:41:23.593 回答