对Android沉浸式布局的思考

本文探讨了一项关于修改模块Title样式的需求,面对原有背景填充的问题,提出了多种解决方案,并最终选择了使用StatusBarCompat进行处理,有效解决了不同厂商ROM适配的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近分到一个需求,修改本模块的Title样式与风格。之前的bg是全屏的,通过设置状态栏透明来扩展bg颜色到状态栏上。

现在的bg要求不再充满,这就难住我了。

因为之前的bg是gradient的drawable,而drawable设置为View背景的时候,默认是填充的,所以想修改大小是很难的。

1.layer-list

如果设置bottom,屏幕不好适配;

如果设置top,需要背景色,过度绘制

2.图片

apk体积增大,过度绘制

3.View

状态栏无法侵入,默认会读取根View上方的与状态栏等大的区域背景,子View的不会获取

4.getWindow().setStatusBackgroundColor()

顶部只能设置color,而我的需求是gradient drawable,无法设置,我也无法反射创建状态栏

5.占用状态栏空间

设置一些标记位,让状态栏透明,且空间可以被占用,反射获取状态栏高度,创建等尺寸View代替状态栏

最终解决方案:2

下一步背景图可能改成纯色,届时替换方案4,这里着重讲4


4关键在于需要支持不同厂商,因为各厂商都改了ROM。5也差不多,需要适配。

所幸网上已有开源实现——StatusBarCompat

一行代码解千愁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值