news 2026/4/15 16:19:22

Compose 适配 - 全屏显示 EdgeToEdge

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Compose 适配 - 全屏显示 EdgeToEdge

官方页面
参考文章

一、概念

edge-to-edge 就是将APP的内容延伸到系统栏区域(状态栏、导航栏、刘海),提供更沉浸的体验。

二、实现

2.1 设置全屏显示

Android 15(API 35)开始会强制开启,更低版本需要在 Activity 的 onCreate() 中调用 enableEdgeToEdge() 方法(最低支持到 Android 6.0),反正无脑必调用就行。

Activity { onCreate() { enableEdgeToEdge() } }

2.2 处理系统重叠冲突

当内容绘制到系统栏区域时,就需要解决遮挡冲突了(可视问题、点击遮挡、手势冲突)。通过 Modifier 来设置(注意调用的先后问题,如背景色),表中左边包含了右边。

.safeContentPadding()

一个方法全部搞定。

.safeDrawingPadding()

避免内容延伸至系统栏区域造成点击或可视问题。

.statusBarsPadding()

状态栏边距。

.navigationBarsPadding()

导航栏边距。

.safeGesturesPadding()

避免系统全面屏手势与应用手势冲突。

@Composable fun MainScreen() { Box( modifier = Modifier .fillMaxSize() .background(AppColors.green) .safeContentPadding() ) {...} }

三、一些技巧

3.1 状态栏半透明保护

谷歌官方提供的方式,解决可读性。

class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MyTheme { MyContent() StatusBarProtection() } } } } @Composable private fun StatusBarProtection( color: Color = MaterialTheme.colorScheme.surfaceContainer, heightProvider: () -> Float = calculateGradientHeight(), ) { Canvas(Modifier.fillMaxSize()) { val calculatedHeight = heightProvider() val gradient = Brush.verticalGradient( colors = listOf( color.copy(alpha = 1f), color.copy(alpha = .8f), Color.Transparent ), startY = 0f, endY = calculatedHeight ) drawRect( brush = gradient, size = Size(size.width, calculatedHeight), ) } } @Composable fun calculateGradientHeight(): () -> Float { val statusBars = WindowInsets.statusBars val density = LocalDensity.current return { statusBars.getTop(density).times(1.2f) } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/11 4:49:07

在 Pr 中怎么快速制作转场?5 年剪辑师的一整套实用思路

很多人刚开始用 Pr(Adobe Premiere Pro) 剪视频时,都会有一个共同感受: 画面剪辑本身并不算难,但一到镜头衔接的地方,视频就开始“卡壳”。 不是画面断得太生硬,就是怎么看都不像成片。 这时候你…

作者头像 李华
网站建设 2026/4/12 17:24:59

基于单片机的架空线路接地故障检测与报警系统

1. 系统总体概述 点击链接下载设计资料:https://download.csdn.net/download/m0_51061483/92081476 1.1 设计背景 架空输电线路广泛应用于电力输送系统中,具有建设成本低、维护方便等优点。然而,由于架空线路长期暴露在自然环境中&#xff…

作者头像 李华
网站建设 2026/4/13 10:34:19

以机器为中心到以人为中心,大晓机器人首创ACE具身研发范式

中国上海,12月18日——大晓机器人正式发布行业首创的ACE具身研发范式、首个开源且商业应用的开悟世界模型3.0(Kairos 3.0)、让具身本体拥有自主空间智能的具身超级大脑模组A1,与行业伙伴共同构建全链自主可控、开放共赢的产业级生…

作者头像 李华
网站建设 2026/4/14 20:30:43

告别传输难题!Localsend+cpolar让文件互传高效又简单

文章目录前言1. 在Windows上安装LocalSend2. 安装Cpolar内网穿透3. 公网访问LocalSend4. 固定LocalSend公网地址前言 Localsend 是一款专注于设备间文件传输的工具,支持 Windows、macOS、Linux 等多种系统,通过 UDP 协议和多线程加速技术,能…

作者头像 李华
网站建设 2026/4/12 6:07:01

介观交通流仿真软件:VISSIM (介观模式)_(6).驾驶行为参数设置

驾驶行为参数设置 在VISSIM介观模式中,驾驶行为参数的设置是仿真模型的重要组成部分,直接影响到交通流的动态特性和仿真的准确性。驾驶行为参数主要包括加速度、减速度、跟车模型、换道模型、超车型行为等。本节将详细介绍如何在VISSIM中设置这些参数&am…

作者头像 李华