跳到主要内容
版本: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 开始,此选择退出功能 不再可用,该行为由系统强制执行。 因此,overlaysWebViewbackgroundColor 配置选项不再有任何效果。

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