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

Android 15及以上Ionic应用适配状态栏与导航栏间显示求助

Ionic 应用在 Android 15+ 适配状态栏与导航栏之间显示的解决方案

一、配置系统级显示参数

Capacitor 项目

修改 capacitor.config.ts,添加适配相关配置:

export default defineConfig({
  android: {
    androidXEnabled: true, // 必须开启AndroidX支持
    // 其他原有配置保留,新增以下
    statusBar: {
      backgroundColor: "#00000000",
      overlaysWebView: true
    },
    navigationBar: {
      backgroundColor: "#00000000",
      overlaysWebView: true
    }
  },
});

Cordova 项目

打开 config.xml,在 <platform name="android"> 节点下添加:

<preference name="AndroidXEnabled" value="true" />
<preference name="StatusBarOverlaysWebView" value="true" />
<preference name="StatusBarStyle" value="lightcontent" />
<preference name="NavigationBarColor" value="@android:color/transparent" />
<preference name="StatusBarBackgroundColor" value="@android:color/transparent" />

二、用 Capacitor/Ionic Native 插件控制系统栏

安装插件(Capacitor)

npm install @capacitor/status-bar @capacitor/navigation-bar
npx cap sync

在应用初始化时设置

打开 app.component.ts,在初始化方法里添加:

import { StatusBar, Style } from '@capacitor/status-bar';
import { NavigationBar } from '@capacitor/navigation-bar';

async initializeApp() {
  // 让状态栏覆盖WebView,内容延伸到状态栏下方
  await StatusBar.setOverlaysWebView({ overlay: true });
  // 根据背景色设置状态栏文字样式
  await StatusBar.setStyle({ style: Style.Dark });
  // 设置状态栏完全透明
  await StatusBar.setBackgroundColor({ color: "#00000000" });

  // 导航栏同理配置
  await NavigationBar.setOverlaysWebView({ overlay: true });
  await NavigationBar.setColor({ color: "#00000000" });

  // 给页面内容加上安全区域内边距,避免被系统栏遮挡
  document.body.style.paddingTop = 'var(--ion-safe-area-top)';
  document.body.style.paddingBottom = 'var(--ion-safe-area-bottom)';
}

三、适配 Android 15 专属的系统UI规则

Android 15 对系统栏布局逻辑有更新,需要修改 Android 原生主题:
打开 android/app/src/main/res/values/styles.xml,修改应用主题:

<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.NoActionBar">
  <!-- 允许内容延伸到刘海区域 -->
  <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
  <!-- 开启状态栏、导航栏透明 -->
  <item name="android:windowTranslucentStatus">true</item>
  <item name="android:windowTranslucentNavigation">true</item>
  <item name="android:statusBarColor">@android:color/transparent</item>
  <item name="android:navigationBarColor">@android:color/transparent</item>
</style>

四、页面层的安全区域适配

使用 Ionic 的 ion-content 时,开启全屏模式并利用内置安全区域变量:

<ion-content fullscreen="true">
  <!-- 内容会自动适配安全区域,不会被系统栏遮挡 -->
  <div class="ion-padding-start ion-padding-end">
    <!-- 你的页面内容 -->
  </div>
</ion-content>

也可以在全局 CSS 里统一设置:

ion-content {
  --padding-top: var(--ion-safe-area-top);
  --padding-bottom: var(--ion-safe-area-bottom);
}

五、测试验证

构建并运行到 Android 15 设备或模拟器:

npx cap run android

确认内容完全显示在状态栏和导航栏之间,且无遮挡情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 11:12:47