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

如何让Android应用实现全屏?无需AppCompat且避免状态栏黑边

解决原生Material主题全屏状态栏黑边问题

一、无黑边全屏实现(不依赖AppCompat)

你之前的问题是android:windowTranslucentStatus和android:windowFullscreen同时启用导致的冲突,调整主题配置再结合版本适配代码即可解决:

  1. 修改style.xml配置,移除冲突属性:
<resources>
    <style name="AppDefaultTheme" parent="@android:style/Theme.Material.NoActionBar">
        <item name="android:windowFullscreen">true</item>
        <!-- 移除半透明状态栏属性,避免和全屏模式冲突 -->
        <item name="android:windowTranslucentStatus">false</item>
        <!-- 禁止绘制系统栏背景,消除黑边 -->
        <item name="android:windowDrawsSystemBarBackgrounds">false</item>
    </style>
</resources>
  1. 在Activity的onCreate方法中添加版本适配代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 适配Android 11及以上版本
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        getWindow().setDecorFitsSystemWindows(false);
        WindowInsetsController insetsController = getWindow().getInsetsController();
        if (insetsController != null) {
            // 隐藏状态栏
            insetsController.hide(WindowInsets.Type.statusBars());
            // 允许滑动手势唤起状态栏
            insetsController.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
        }
    } else {
        // 适配Android 10及以下版本
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        getWindow().getDecorView().setSystemUiVisibility(
            View.SYSTEM_UI_FLAG_LAYOUT_STABLE | 
            View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
        );
    }
    setContentView(R.layout.activity_main);
}

二、隐藏状态栏图标(无需全屏)

如果只是想隐藏状态栏的信号、电量等图标,而非整个状态栏,可以用以下方法:

  • Android 10及以下:
    在Activity中添加代码:
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE);
  • Android 11及以上:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    WindowInsetsController insetsController = getWindow().getInsetsController();
    if (insetsController != null) {
        // 设置低模式,状态栏图标会变成灰色小图标
        insetsController.setSystemBarsAppearance(WindowInsetsController.APPEARANCE_LOW_PROFILE, WindowInsetsController.APPEARANCE_LOW_PROFILE);
    }
}

注意:低模式下用户点击或滑动状态栏时,图标会恢复正常显示状态。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:13:22