使用NavigationComponent和BottomNavigationView隐藏工具栏后退箭头

时间:2019-06-19 14:33:36

标签: android android-toolbar android-jetpack android-navigation android-jetpack-navigation

我正在实现将NavigationComponent与BottomNavigationView结合使用的过程,并且我注意到除我的导航图中指定为startDestination的片段以外,所有片段目标的工具栏中都显示了向后箭头。

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

请参见下面的图像作为示例以及我要实现的目标。 有什么方法可以做到这一点? enter image description here

4 个答案:

答案 0 :(得分:3)

kotlin中这样做

    navController.addOnDestinationChangedListener { _, destination, _ ->
        if (destination.id == R.id.searchFragment) {
            binding.toolbar.navigationIcon = null
        } else {
        }
    }

答案 1 :(得分:2)

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

EX:

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);
            }
        }});

答案 2 :(得分:1)

如果您使用的是AppBarConfiguration,则应该是这样。

AppBarConfiguration(
            setOf(
                R.id.homeFragment,
                R.id.dashboardFragment,
                R.id.notificationsFragment
            )
        )

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

抬起头,当您回击时,您将退出该应用程序。因此,如果您需要其他情况,则应为每个片段配置onBackPressed

答案 3 :(得分:0)

使用getActionBar().setDisplayHomeAsUpEnabled(false)从工具栏上删除主页/后退按钮