您正在尝试在Capacitor应用中实现全屏幕显示吗? 您不需要任何hack、插件或工作-around。Capacitor支持全屏幕显示,通过 adjustMarginsForEdgeToEdge targetLanguage":"Simplified Chinese","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"texts":["配置选项 - 它并不是很广泛地文档化。",
许多开发者在Capacitor应用中遇到边缘到边缘布局的问题,尤其是在针对Android 15+时。他们经常使用自定义插件或CSS技巧来实现现代的边缘到边缘外观。但是,有更好的、native的方法。",
什么是边缘到边缘显示?
,
边缘到边缘显示允许您的应用内容延伸到系统栏(状态栏和导航栏)后面,创建一个更沉浸、更现代的UI体验。从Android 15开始,Google正在将边缘到边缘作为所有应用的标准。",
Capacitor provides the adjustMarginsForEdgeToEdge , Capacitor提供了 ,
配置选项,专门用于此目的。这在
, capacitor.config.ts 官方__CAPGO_KEEP_0__配置文档中有详细说明,但很容易忽略。", capacitor.config.json:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'My App',
webDir: 'dist',
android: {
adjustMarginsForEdgeToEdge: 'auto' // or 'force' or 'disable'
}
};
export default config;
或在 JSON 格式:
{
"appId": "com.example.app",
"appName": "My App",
"webDir": "dist",
"android": {
"adjustMarginsForEdgeToEdge": "auto"
}
}
配置选项
它 adjustMarginsForEdgeToEdge 该选项接受三个值:
1. "auto" (推荐)
adjustMarginsForEdgeToEdge: 'auto'
它做什么: 自动检查 Android 15+ 和设置。根据设备和配置智能调整边距。 windowOptOutEdgeToEdgeEnforcement 适用于:
大多数生产应用程序,希望在支持的设备上实现边缘到边缘,同时保持与旧版 Android 版本的兼容性。 它做什么:
2. "force"
adjustMarginsForEdgeToEdge: 'force'
无论 Android 版本或其他设置如何,都强制边缘调整。 该选项接受三个值:
Best for: Android 全平台版本的应用想要边缘到边缘的行为。
3. "disable"
adjustMarginsForEdgeToEdge: 'disable'
What it does: 完全禁用自动边距调整。
Best for: 手动处理边缘到边缘布局或不想要边缘到边缘行为的应用。
注意: 目前是默认值,但将在 Capgo 8 中更改为 "disable" 为什么 Android 15+ 对 Android 应用很重要 "auto" in Capacitor 8.
Currently
in
- 系统栏后面的内容
- 不协调的间距和填充
- 设备间不一致的外观
- 糟糕的用户体验
通过使用官方 adjustMarginsForEdgeToEdge 配置,您可以确保您的应用程序正确处理这些变化而无需自定义code。
完整示例
以下是现代Capacitor应用程序的完整示例配置:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.myapp',
appName: 'My Awesome App',
webDir: 'www',
server: {
androidScheme: 'https'
},
android: {
// Enable edge-to-edge automatically on supported devices
adjustMarginsForEdgeToEdge: 'auto',
// Other Android config options...
backgroundColor: '#ffffff'
}
};
export default config;
CSS注意事项
在使用无边框显示时,您可能需要添加一些CSS来处理安全区域:
/* Add padding for system bars */
body {
padding-top: env(safe-area-inset-top);
padding-bottom: env(safe-area-inset-bottom);
padding-left: env(safe-area-inset-left);
padding-right: env(safe-area-inset-right);
}
/* Or use viewport-fit */
meta[name="viewport"] {
content: "width=device-width, initial-scale=1, viewport-fit=cover";
}
测试您的配置
配置后 adjustMarginsForEdgeToEdge测试您的应用程序:
- Android 15+ 设备 - 检查内容是否恰当地尊严系统栏
- 较旧的 Android 版本 - 确保向后兼容
- 不同屏幕尺寸 - 验证布局在不同设备上工作
- 浅色和深色主题 - 测试两种主题模式
常见错误
避免使用此类插件
您不需要像这样的第三方插件 capacitor-edge-to-edge 或类似。原生配置处理此项得当。如果您需要在启用后对系统浏览器进行细粒度控制 adjustMarginsForEdgeToEdge, @capgo/capacitor-导航栏 和 @capgo/首页指示器 补充原生配置而不替换它。
不要与手动实现混淆
如果您正在使用 adjustMarginsForEdgeToEdge,请移除任何手动窗口内边距处理或CSS黑客。
不要忘记安全区域CSS
配置处理边距调整,但您仍需要使用CSS安全区域内边距来获得正确的内容填充。
迁移指南
如果您当前正在使用插件或黑客来实现全屏幕:
- 从您的依赖项中移除任何边缘到边缘的插件 从您的依赖项中移除任何边缘到边缘的插件
- 将配置选项添加到您的 将配置选项添加到您的
capacitor.config.ts - 清理并重建 清理并重建
- 在目标设备上进行彻底测试 在目标设备上进行彻底测试
# Clean the Android project
npx cap sync android
cd android
./gradlew clean
cd ..
# Rebuild
npx cap copy android
npx cap open android
为未来的发展做好准备
请记住 Capacitor 8 将设置默认值。为了准备: "auto" 在目标设备上进行测试
- 在目标设备上进行测试
"auto"现在 早期发现任何问题 - 更新 CSS 正确处理安全区域
- 检查布局 在启用边缘到边缘的设备上
额外资源
结论
Edge-to-edge display in Capacitor doesn’t require plugins, hacks, or complicated workarounds. The adjustMarginsForEdgeToEdge 配置选项提供了一个干净、原生的解决方案,得到官方支持并且是未来可行的。
从 "auto" 对于大多数应用,测试在各类设备上,添加适当的安全区域CSS。您的应用将在最小努力下准备好Android 15和之后的版本。
有问题或遇到困难? The Capacitor community and 官方文档 是获取额外帮助的好资源。
从边缘到边缘的Capacitor中继续 Without Plugins
如果您正在使用 边缘到边缘的Capacitor Without Plugins 来规划原生的媒体和界面行为,连接它与 使用@capgo/capacitor-live-activities 为使用@capgo/capacitor-live-activities的原生能力 @capgo/capacitor-live-activities 在@capgo/capacitor-live-activities的实现细节中 使用@capgo/capacitor-video-player 为使用@capgo/capacitor-video-player的原生能力 @capgo/capacitor-video-player 在@capgo/capacitor-video-player的实现细节中, 使用@capgo/capacitor-native-navigation 为使用@capgo/capacitor-native-navigation的原生能力