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

如何创建保留通知栏的全屏Android Activity?

实现带通知栏样式的全屏Activity(沉浸式状态栏)

你之前用的FLAG_FULLSCREEN是完全隐藏状态栏的,这就是为什么不符合需求。要实现「全屏但保留通知栏样式」,其实就是Android里的沉浸式状态栏(透明状态栏)——让应用内容延伸到状态栏下方,同时状态栏保持可见且样式适配。下面分几种实用场景给你方案:

方案1:代码动态设置(单Activity适配)

在目标Activity的onCreate方法里,放在setContentView之前执行这段代码:

// 设置状态栏为透明
getWindow().setStatusBarColor(Color.TRANSPARENT);
// 让页面内容延伸覆盖到状态栏区域,同时保持布局稳定
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);

如果你的页面背景偏浅,需要把状态栏文字改成深色(避免看不清),可以针对Android 6.0+版本额外添加配置:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
        | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR // 开启深色状态栏文字
    );
} else {
    getWindow().getDecorView().setSystemUiVisibility(
        View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN 
        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
    );
}

方案2:主题样式配置(全局/多Activity适配)

如果想让多个Activity统一用这个样式,更推荐通过主题配置实现。在res/values/styles.xml里定义专属主题:

<style name="MusicAppFullscreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- 设置状态栏透明 -->
    <item name="android:statusBarColor">@android:color/transparent</item>
    <!-- 允许内容延伸到状态栏,同时适配刘海屏 -->
    <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
    <item name="android:windowTranslucentStatus">true</item>
    <!-- 可选:开启深色状态栏文字(Android 6.0+生效) -->
    <item name="android:windowLightStatusBar">true</item>
</style>

然后在AndroidManifest.xml里给目标Activity绑定这个主题:

<activity
    android:name=".YourMusicPlayActivity"
    android:theme="@style/MusicAppFullscreenTheme">
</activity>

小提示

如果你的布局顶部有Toolbar或导航栏控件,记得给它加上android:fitsSystemWindows="true",这样控件会自动避开状态栏区域,避免内容被状态栏遮挡。

内容的提问来源于stack exchange,提问作者Binh Cao

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:04:42