跳到主要内容
版本:v8

@capacitor/status-bar

StatusBar API 提供配置状态栏样式、显示或隐藏状态栏的方法。

安装

npm install @capacitor/status-bar
npx cap sync

Android 16+ 行为变更

针对使用 Capacitor 8 且目标 API 为 Android 16(API 级别 36) 及更高版本的应用,以下状态栏配置选项将不再生效

  • overlaysWebView
  • backgroundColor

这些选项依赖于能否选择退出 Android 的边到边(edge-to-edge) 系统 UI 行为,该行为允许应用控制状态栏的覆盖方式和背景色。

Android 15(API 级别 35) 中,仍然可以通过在应用布局文件中设置 windowOptOutEdgeToEdgeEnforcement 属性来退出这种强制行为。
如果不设置该属性,应用会默认将 overlaysWebView 视为始终为 true
更多细节请参阅 Android 文档:https://developer.android.com/reference/android/R.attr#windowOptOutEdgeToEdgeEnforcement

Android 16 开始,此退出选项不再可用,该行为由系统强制执行。
因此,overlaysWebViewbackgroundColor 配置选项将不再产生任何效果。

iOS 注意事项

此插件需要在 Info.plist 中将“基于视图控制器的状态栏外观”(UIViewControllerBasedStatusBarAppearance)设置为 YES
请参阅 配置 iOS 获取帮助。

状态栏的可见性默认是可见,样式默认是 Style.Default
您可以通过在 Info.plist 中添加 UIStatusBarHidden 和/或 UIStatusBarStyle 来修改这些默认值。

示例

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

// 仅 iOS
window.addEventListener('statusTap', function () {
console.log('状态栏被点击');
});

// 在透明状态栏下显示内容
StatusBar.setOverlaysWebView({ overlay: true });

const setStatusBarStyleDark = async () => {
await StatusBar.setStyle({ style: Style.Dark });
};

const setStatusBarStyleLight = async () => {
await StatusBar.setStyle({ style: Style.Light });
};

const hideStatusBar = async () => {
await StatusBar.hide();
};

const showStatusBar = async () => {
await StatusBar.show();
};

配置

可用的配置值如下:

属性类型描述默认值始于
overlaysWebViewboolean状态栏是否覆盖在网页视图之上。在 Android 15+ 上不可用。true1.0.0
stylestring状态栏文本的样式default1.0.0
backgroundColorstring状态栏背景色,十六进制格式 #RRGGBB。如果 overlaysWebViewtrue 则不生效。在 Android 15+ 上不可用。#0000001.0.0

示例

capacitor.config.json 中:

{
"plugins": {
"StatusBar": {
"overlaysWebView": false,
"style": "DARK",
"backgroundColor": "#ffffffff"
}
}
}

capacitor.config.ts 中:

/// <reference types="@capacitor/status-bar" />

import { CapacitorConfig } from '@capacitor/cli';

const config: CapacitorConfig = {
plugins: {
StatusBar: {
overlaysWebView: false,
style: "DARK",
backgroundColor: "#ffffffff",
},
},
};

export default config;

API

setStyle(...)

setStyle(options: StyleOptions) => Promise<void>

设置状态栏的当前样式。

参数类型
options
StyleOptions

始于: 1.0.0


setBackgroundColor(...)

setBackgroundColor(options: BackgroundColorOptions) => Promise<void>

设置状态栏的背景色。
调用此函数会更新状态栏的前景色(如果样式设置为 default),但在 iOS 17 以下版本除外。
在 Android 15+ 上不可用。

参数类型
options
BackgroundColorOptions

始于: 1.0.0


show(...)

show(options?: AnimationOptions | undefined) => Promise<void>

显示状态栏。
在 iOS 上,如果状态栏初始是隐藏的且初始样式设置为 UIStatusBarStyleLightContent,第一次调用 show 时动画可能会出现闪烁,即文本先显示为深色然后过渡到浅色。
建议在第一次调用时使用 Animation.None 作为动画选项。

参数类型
options
AnimationOptions

始于: 1.0.0


hide(...)

hide(options?: AnimationOptions | undefined) => Promise<void>

隐藏状态栏。

参数类型
options
AnimationOptions

始于: 1.0.0


getInfo()

getInfo() => Promise<StatusBarInfo>

获取状态栏当前状态的信息。

返回值:

Promise<StatusBarInfo>

始于: 1.0.0

--------------------### setOverlaysWebView(...)

setOverlaysWebView(options: SetOverlaysWebViewOptions) => Promise<void>

设置状态栏是否应覆盖 WebView,以便使用其下方的空间。 在 Android 15+ 上不可用。

参数类型
options
SetOverlaysWebViewOptions

自: 1.0.0


接口

StyleOptions

属性类型描述
style
Style
状态栏文本的样式1.0.0

BackgroundColorOptions

属性类型描述
colorstring设置状态栏颜色的十六进制颜色值。1.0.0

AnimationOptions

属性类型描述默认值
animation
Animation
显示或隐藏时使用的状态栏动画类型。此选项仅在 iOS 上受支持。Animation.Fade1.0.0

StatusBarInfo

属性类型描述
visibleboolean状态栏是否可见。1.0.0
style
Style
当前状态栏的样式。1.0.0
colorstring当前状态栏的颜色。1.0.0
overlaysboolean状态栏是否处于覆盖模式。1.0.0

SetOverlaysWebViewOptions

属性类型描述
overlayboolean是否覆盖状态栏。1.0.0

枚举

Style

成员描述
Dark'DARK'深色背景下的浅色文本。1.0.0
Light'LIGHT'浅色背景下的深色文本。1.0.0
Default'DEFAULT'样式基于设备外观。如果设备使用深色模式,状态栏文本将为浅色。如果设备使用浅色模式,状态栏文本将为深色。1.0.0

Animation

成员描述
None'NONE'显示/隐藏时不使用动画。1.0.0
Slide'SLIDE'显示/隐藏时使用滑动动画。在 iOS 15+ 上无效。1.0.0
Fade'FADE'显示/隐藏时使用淡入淡出动画。1.0.0