news 2026/6/23 18:05:48

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/6/17 19:23:18

python-flask-django重症监护室中急诊护理管理系统设计与实现_zjv2nt1d

文章目录具体实现截图主要技术与实现手段关于我本系统开发思路java类核心代码部分展示结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!具体实现截图 同行可拿货,招校园代理 Python-flask-django_张俊涛d 重症监护室中急诊护理管理…

作者头像 李华
网站建设 2026/6/15 1:26:15

拿一句,逗得你家男人哭笑不得

1. 处对象不?别人欺负你我会吃醋,毕竟只有我能欺负你~2. 见过那么多帅哥,还是你最会装,装得好像很爱我似的!3. 别人撒娇要亲亲,我撒娇要你把遥控器交出来~4. 我们先断联吧&#xff0…

作者头像 李华
网站建设 2026/6/19 9:10:05

介观交通流仿真软件:VISSIM (介观模式)_(5).车辆行为模型

车辆行为模型 在介观交通流仿真软件中,车辆行为模型是模拟交通流的关键部分。这一部分主要描述车辆如何在道路上行驶、如何响应交通信号、如何与其他车辆交互等。车辆行为模型通常包括以下几个方面: 1. 车辆跟驰模型 1.1 基本概念 车辆跟驰模型&#xff…

作者头像 李华
网站建设 2026/6/23 17:25:52

英特尔酷睿Ultra第三代,如何推动AI PC规模化落地?

作者:金旺 2023年9月,在英特尔正式提出AI PC概念后,一个全新的PC纪元拉开帷幕。 彼时,就在大家都还在谈论什么样的PC,才是真正的AI PC时,英特尔已经做出了一个大胆的预测:到2028年,A…

作者头像 李华
网站建设 2026/6/23 12:54:45

15、密码学编程问题与解决方案

密码学编程问题与解决方案 1. 引言 密码学在信息安全领域扮演着至关重要的角色。本文将介绍几种常见的密码学算法的编程实现,包括凯撒密码、维吉尼亚密码、Base64编码解码、用户凭证验证等,并给出相应的代码示例。 2. 凯撒密码(Caesar Cipher) 原理 :凯撒密码是一种古…

作者头像 李华