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

Android下为特定Fragment设置透明状态栏的异常问题咨询

单Fragment透明状态栏解决方案

问题核心原因:Activity的Window是全局共享的,你在HomeFragment中修改了Window的状态栏配置后,没有在Fragment离开视野时恢复默认配置,导致所有依附于该Activity的Fragment都继承了透明状态栏的效果。

步骤1:新增状态栏恢复方法

在HomeFragment中添加恢复状态栏默认样式的方法:

private void resetStatusBar() {
    Window window = getActivity().getWindow();
    // 清除全屏布局标记
    window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
    // 恢复状态栏为项目默认颜色,替换为你自己项目的状态栏色值即可
    window.setStatusBarColor(ContextCompat.getColor(requireContext(), R.color.your_default_status_bar_color));
}

步骤2:绑定状态栏配置切换时机

根据你项目的Fragment切换方式选择对应实现逻辑:

  • 场景1:使用ViewPager/ViewPager2切换Fragment
    在HomeFragment的onResume()生命周期中调用transparentStatusBar(),在onPause()生命周期中调用resetStatusBar()。
  • 场景2:使用FragmentManager的hide/show方法切换Fragment
    重写HomeFragment的onHiddenChanged方法:
    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (hidden) {
            resetStatusBar();
        } else {
            transparentStatusBar();
        }
    }
    

补充说明

如果其余三个Fragment有自定义状态栏颜色的需求,可以在各自的onResume()方法中调用setStatusBarColor方法设置对应色值即可。

内容的提问来源于stack exchange,提问作者Mustak khadem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 23:39:02