This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

系统栏

编辑页面

了解如何在你的 Expo 项目中处理和自定义系统栏,以实现安全区域和边到边布局。


系统栏是位于屏幕边缘的 UI 元素,它们提供必要的设备信息和导航控制。根据移动操作系统的不同,它们包括状态栏(AndroidiOS)、标题栏(仅 Android)、导航栏(AndroidiOS),以及主屏幕指示条(仅 iOS)。

这些组件用于显示设备信息,例如电池电量、时间、通知提醒,并允许用户在设备界面的任意位置直接与设备交互。例如,应用用户可以下拉状态栏来访问快捷设置和通知,而不受当前正在使用的应用影响。

系统栏是移动体验的基础,了解如何正确使用它们对于创建你的应用非常重要。

使用安全区域处理重叠

你的应用内容有时可能会绘制到系统栏后面。为了解决这个问题,你需要通过避免重叠并确保系统栏的控件可见,来正确定位应用内容。

以下指南将带你了解如何使用 SafeAreaView 或 hook,直接为屏幕的每一边应用 inset。

安全区域

了解如何为 Expo 项目中的屏幕组件添加安全区域。

Android 上的安全区域和边到边布局

Android 上的边到边布局 之前,通常会使用半透明的状态栏和导航栏。采用这种方式时,绘制在这些栏后面的内容实际上已经位于它们下方,因此通常不需要考虑安全区域。

现在,随着 Android 上的边到边布局 的启用,你需要使用安全区域来确保内容不会与系统栏重叠。

自定义系统栏

系统栏可以自定义,以匹配你的应用设计,并在不同场景下提供更好的可见性。在使用 Expo 时,可使用两个库来实现这一点:expo-status-barexpo-navigation-bar(仅 Android)。

状态栏配置

状态栏出现在 Android 和 iOS 屏幕顶部。你可以使用 expo-status-bar 对其进行自定义。它提供了一个 StatusBar 组件,你可以使用它在应用运行时通过 style 属性或 setStatusBarStyle 方法来控制状态栏的外观:

src/app/_layout.tsx
import { StatusBar } from 'expo-status-bar'; export default function RootLayout() { return ( <> {/* 在状态栏中使用浅色文字而不是深色文字,以便在深色背景下提供更高的对比度。 */} <StatusBar style="light" /> </> ); }

要控制 StatusBar 的可见性,你可以将 hidden 属性设为 true,或者使用 setStatusBarHidden 方法。

导航栏配置(仅 Android)

在 Android 设备上,导航栏显示在屏幕底部。你可以使用 expo-navigation-bar 库来自定义它。它提供了一个 NavigationBar 组件,你可以使用它通过 setStyle 方法设置导航栏样式:

src/app/_layout.tsx
import { NavigationBar } from 'expo-navigation-bar'; export default function RootLayout() { return ( <> {/* 设置导航栏样式 */} <NavigationBar style="dark" /> </> ); }

要控制 NavigationBar 的可见性,你可以使用 hidden 属性或 NavigationBar.setHidden 方法。