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

如何解决Android应用全屏显示时的灰色条问题

解决Android应用全屏显示时的灰色条问题

你已经尝试了基础的全屏设置但仍遇到灰色条,这通常是主题配置遗留、新版本Android全屏API兼容或系统窗口内边距自动适配导致的,下面给你几个针对性的解决方案:

方案1:修改Activity主题,移除默认ActionBar/Toolbar

你代码里用requestWindowFeature(Window.FEATURE_NO_TITLE)隐藏标题,但如果Activity的默认主题自带ActionBar,可能还是会残留灰色条。打开AndroidManifest.xml,给目标Activity设置无ActionBar的主题:

<activity
    android:name=".MainActivity"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar"> <!-- 用Material Design的话可以用Theme.MaterialComponents.DayNight.NoActionBar -->
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

方案2:适配Android 11+的现代全屏API

旧的FLAG_FULLSCREEN在Android 11(API 30)及以上版本对沉浸式全屏的支持不够完善,建议用WindowInsetsController实现真正的全屏:

修改你的MainActivity代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // 先隐藏可能存在的ActionBar
    if (getSupportActionBar() != null) {
        getSupportActionBar().hide();
    }
    setContentView(R.layout.activity_main);
    
    Window window = getWindow();
    // Android 11+ 全屏处理
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
        WindowInsetsController insetsController = window.getInsetsController();
        if (insetsController != null) {
            // 隐藏状态栏和导航栏
            insetsController.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars());
            // 设置交互时仅短暂显示状态栏/导航栏,松手后自动隐藏
            insetsController.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE);
        }
    } else {
        // 旧版本兼容处理
        window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        window.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
    }
}

方案3:禁用布局的系统窗口内边距适配

有时候灰色条是布局自动添加了状态栏/导航栏高度的内边距导致的,在根布局里添加android:fitsSystemWindows="false"即可禁用这个行为:

修改你的activity_main.xml:

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#000000"
    android:fitsSystemWindows="false" <!-- 添加这一行 -->
    tools:context=".MainActivity">
    
    <!-- 你的ImageView、Button等控件 -->
</androidx.constraintlayout.widget.ConstraintLayout>

额外检查点

  • 如果是刘海屏设备,可在AndroidManifest.xml添加刘海屏适配,避免顶部出现灰色区域:
<meta-data
    android:name="android.max_aspect"
    android:value="2.1" />
<meta-data
    android:name="android.notch_support"
    android:value="true" />
  • 部分手机开启手势导航后会有短暂底部灰色提示条,可在系统设置中关闭或通过方案2的API完全隐藏。

建议先尝试方案1+方案3,大部分场景下就能解决问题,若仍有残留再用方案2的新版本API适配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 16:42:47