最近分到一个需求,修改本模块的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
一行代码解千愁