我正在实现将NavigationComponent与BottomNavigationView结合使用的过程,并且我注意到除我的导航图中指定为startDestination
的片段以外,所有片段目标的工具栏中都显示了向后箭头。
我已经找到的该实现的所有示例都显示出类似的行为。在我看来,为BottomNavigationView的每个相关片段隐藏后退箭头似乎是一种更自然的设计,(在工具栏中单击后退箭头以从选项卡2导航至选项卡1对我来说很奇怪,我之前从未见过)
请参见下面的图像作为示例以及我要实现的目标。 有什么方法可以做到这一点?
答案 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)
从工具栏上删除主页/后退按钮