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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:12:48