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

如何在其他Fragment中取消UI全屏状态?

解决办法

核心逻辑

Activity的SystemUiVisibility是全局生效的,不能在Activity里一劳永逸设置,得在每个Fragment的生命周期里单独调整,再配合布局的fitSystemWindows属性控制内容是否延伸到状态栏区域。


第一步:捋顺Activity基础配置

先在Activity的主题里做基础设置,避免默认样式冲突:

  • 主题用Theme.MaterialComponents.Light.NoActionBar(如果用自定义Toolbar),或者保留原生ActionBar但不要加全局状态栏配置
  • 别在Activity的onCreate里全局设置SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN,把控制权交给每个Fragment

第二步:第一个Fragment(全屏延伸状态栏)

在这个Fragment的onViewCreated里设置状态栏模式,同时配置布局:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    // 开启全屏布局延伸
    (activity as AppCompatActivity).run {
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        // 不需要ActionBar就隐藏,需要则保留
        supportActionBar?.hide()
    }
    // 布局根节点必须设置 android:fitSystemWindows="false",让内容延伸到状态栏下方
}

// 可选:Fragment销毁时恢复ActionBar显示,方便后续Fragment使用
override fun onDestroyView() {
    super.onDestroyView()
    (activity as AppCompatActivity).supportActionBar?.show()
}

第三步:其余Fragment(正常状态栏+ActionBar)

在这些Fragment的onViewCreated里恢复正常状态,解决重叠问题:

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    // 恢复状态栏稳定布局,取消全屏延伸
    (activity as AppCompatActivity).run {
        window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        supportActionBar?.show()
    }
    // 布局根节点设置 android:fitSystemWindows="true",系统会自动给内容添加状态栏高度的padding,避免与ActionBar重叠
}

踩坑细节补充

  • 别用View.GONE修改状态栏,这会导致系统重新计算布局高度,直接出现状态栏翻倍、空行这类问题,要用SYSTEM_UI_FLAG_LAYOUT_*系列flag控制布局延伸,而非隐藏状态栏本身
  • 如果用自定义Toolbar,确保Toolbar是布局顶部节点,配合fitSystemWindows="true",系统会自动给根布局添加状态栏高度的padding,避免内容与Toolbar重叠
  • 若仍出现状态栏与ActionBar的间隙,检查主题中android:statusBarColor是否设为透明,仅在第一个Fragment中设置window.statusBarColor = Color.TRANSPARENT即可,其余Fragment恢复默认颜色

内容的提问来源于stack exchange,提问作者Tommy -

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 17:39:31