API28下isAppearanceLightStatusBars等组合使用致Fragment宽高为0
API28 系统栏API迁移结合共享元素转场触发布局消失问题
- 原有状态栏控制逻辑:应用此前通过
systemUiVisibility切换SYSTEM_UI_FLAG_LIGHT_STATUS_BAR配置实现浅色状态栏效果,因该API已废弃,计划迁移到WindowCompat.setDecorFitsSystemWindows搭配windowInsetsControllerCompat.isAppearanceLightStatusBars实现同等能力。 - 异常影响版本:仅在API 28设备上出现异常,API 29及以上版本运行无问题,疑似低版本系统原生Bug。
- 异常触发前提:Activity布局根节点设置了
OnApplyWindowInsetsListener用于适配IME弹出/收起状态,同时两个Fragment之间实现了共享元素转场动画,两个能力同时启用时就会触发布局异常。 - 异常具体表现:转场结束后目标Fragment的根视图宽高被设置为0,页面内容完全消失。

该问题触发逻辑较难通过纯文字完整描述,已编写极简复现工程验证触发路径。
实际运行异常效果:跳转后本应展示第二个Fragment的内容,但页面无任何可见元素,效果如下:
内容的提问来源于stack exchange,提问作者Jonathan Caryl
相关产品推荐
相关产品推荐

