You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何在指定Fragment中隐藏Bottom Navigation View

解决Bottom Navigation在指定Fragment中隐藏的问题

下面提供两种可靠的实现方案,结合你的代码场景修改即可:

方案一:通过MainActivity统一监听Fragment导航状态(推荐)

这种方式能集中控制所有Fragment切换时Bottom Navigation的显示/隐藏,避免在多个Fragment中重复写逻辑。

  1. 在MainActivity中获取BottomNavigationView实例:
BottomNavigationView bottomNav = findViewById(R.id.your_bottom_nav_id); // 替换成你布局中BottomNav的实际ID
  1. 给NavController添加OnDestinationChangedListener,根据当前Fragment的ID判断是否隐藏底部导航:
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment); // 替换成你的NavHostFragment ID
navController.addOnDestinationChangedListener((controller, destination, arguments) -> {
    // 判断当前是否是Details_Added_Fragment
    if (destination.getId() == R.id.details_added_fragment) { // 替换成该Fragment在导航图中的ID
        bottomNav.setVisibility(View.GONE);
    } else {
        bottomNav.setVisibility(View.VISIBLE);
    }
});

方案二:在Details_Added_Fragment的生命周期中控制

直接在目标Fragment的生命周期方法中修改MainActivity里Bottom Navigation的可见性:

  1. 在Fragment的onViewCreated方法中隐藏底部导航:
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
    // 从宿主Activity获取BottomNavigationView
    BottomNavigationView bottomNav = requireActivity().findViewById(R.id.your_bottom_nav_id);
    bottomNav.setVisibility(View.GONE);
}
  1. 在Fragment销毁视图时恢复显示,避免回到其他Fragment时底部导航消失:
@Override
public void onDestroyView() {
    super.onDestroyView();
    BottomNavigationView bottomNav = requireActivity().findViewById(R.id.your_bottom_nav_id);
    bottomNav.setVisibility(View.VISIBLE);
}

注意事项

  • 务必替换代码中所有占位ID为你项目中对应的实际ID
  • 使用方案二时,需注意Fragment的生命周期,避免因屏幕旋转等配置变更导致状态异常

内容的提问来源于stack exchange,提问作者Vivek M Fauzdar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 00:36:21