跳到主要内容
版本:v7

@capacitor/status-bar

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

安装

npm install @capacitor/status-bar@latest-7
npx cap sync

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 tapped');
});

// 在透明状态栏下显示内容
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状态栏是否覆盖在 WebView 之上。对于目标 API 级别为 Android 15 的应用,除非在应用布局文件中添加 windowOptOutEdgeToEdgeEnforcement 属性,否则此属性无效。否则,应用将始终将 overlays 视为 true。更多细节请参考 https://developer.android.com/reference/android/R.attr#windowOptOutEdgeToEdgeEnforcementtrue1.0.0
stylestring状态栏文本的样式default1.0.0
backgroundColorstring状态栏背景颜色,使用十六进制格式 #RRGGBB。如果 overlaysWebView 为 true,则此设置无效。#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>

设置状态栏的背景颜色。

参数类型
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,以允许使用其下方的空间。

参数类型
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