跳到主要内容
版本:v8

@capacitor/status-bar

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

安装​

npm install @capacitor/status-bar
npx cap sync

Android 16+ 行为变更​

对于使用 Capacitor 8、目标为 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 开始,此选择退出功能 不再可用,该行为由系统强制执行。 因此,overlaysWebView 和 backgroundColor 配置选项不再有任何效果。

iOS 注意​

此插件要求在 Info.plist 中将 "View controller-based status bar appearance"(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。如果 overlaysWebView 为 true 则无效。在 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>

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

参数类型
options
BackgroundColorOptions

始于: 1.0.0


show(...)​

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

显示状态栏。 在 iOS 上,如果状态栏最初是隐藏的且初始样式设置为 UIStatusBarStyleLightContent,第一次显示调用可能会在动画中出现瑕疵,即文本先显示为深色然后过渡到浅色。建议在第一次调用时使用 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


addListener('statusBarVisibilityChanged', ...)​

addListener(eventName: 'statusBarVisibilityChanged', listenerFunc: VisibilityChangeListener) => Promise<PluginListenerHandle>

监听状态栏可见性变化。 当 hide 或 show 方法被调用时触发。

参数类型
eventName'statusBarVisibilityChanged'
listenerFunc
VisibilityChangeListener

返回:

Promise<PluginListenerHandle>

始于: 7.0.0


addListener('statusBarOverlayChanged', ...)​

addListener(eventName: 'statusBarOverlayChanged', listenerFunc: OverlayChangeListener) => Promise<PluginListenerHandle>

监听状态栏叠加状态变化。 当 setOverlaysWebView 被调用时触发。

参数类型
eventName'statusBarOverlayChanged'
listenerFunc
OverlayChangeListener

返回:

Promise<PluginListenerHandle>

始于: 7.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
heightnumber状态栏的高度。7.0.0

SetOverlaysWebViewOptions​

属性类型描述始于
overlayboolean是否叠加显示状态栏。1.0.0

PluginListenerHandle​

属性类型
remove() => Promise<void>

类型别名​

VisibilityChangeListener​

(info: StatusBarInfo): void

OverlayChangeListener​

(info: StatusBarInfo): void

枚举​

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