Android 13(Pixel 6)Activity全屏显示异常排查求助
问题排查与解决步骤
1. 修复主题命名冲突
你当前自定义主题的名称和父主题完全一致(Theme.AppCompat.Light.NoActionBar),这会导致系统优先加载内置主题,你的自定义属性根本没生效。立刻修改主题名称,比如改成:
<!-- 日间主题 --> <style name="Theme.MyApp.Fullscreen" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorOnPrimary">@color/white</item> <item name="android:windowBackground">@color/white</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:windowActionBar">false</item> <item name="android:windowContentOverlay">@null</item> <!-- 适配挖孔屏,让布局延伸到状态栏区域 --> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> </style> <!-- 夜间主题 --> <style name="Theme.MyApp.Fullscreen.Night" parent="@style/Theme.AppCompat.Light.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorOnPrimary">@color/white</item> <item name="android:windowBackground">@color/white</item> <item name="android:colorBackground">@color/white</item> <item name="android:statusBarColor">@android:color/transparent</item> <item name="android:windowActionBar">false</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item> </style>
然后在AndroidManifest.xml中替换所有android:theme引用为新主题:
android:theme="@style/Theme.MyApp.Fullscreen"
2. 替换过时的全屏API(适配Android 12+)
SYSTEM_UI_FLAG_*系列标记在Android 11开始被弃用,Pixel 6运行Android 12+,旧API可能失效。把Activity中onCreate里的全屏代码替换为:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout); Window window = getWindow(); // 让布局延伸到系统栏下方 window.setDecorFitsSystemWindows(false); WindowInsetsController insetsController = window.getInsetsController(); if (insetsController != null) { // 隐藏状态栏和导航栏 insetsController.hide(WindowInsets.Type.statusBars() | WindowInsets.Type.navigationBars()); // 设置粘性沉浸式:滑动时临时显示系统栏,松手后自动隐藏 insetsController.setSystemBarsBehavior(WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE); } }
3. 检查布局根视图属性
确保布局根视图没有设置android:fitsSystemWindows="true",这个属性会强制布局避开系统栏区域,导致无法真正全屏。如果有,改成:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="false"> <!-- 你的布局内容 --> </LinearLayout>
4. 移除主题中冲突的属性
删掉主题里的android:windowTranslucentStatus、android:windowTranslucentNavigation、android:windowFullscreen,这些属性和新API冲突,会干扰全屏效果。
做完以上步骤,重新编译安装到Pixel 6真机即可正常全屏。
内容的提问来源于stack exchange,提问作者Jamie
相关产品推荐
相关产品推荐

