In-app review底部弹窗下方出现异常黑背景而非常规遮罩如何解决?
问题根因
- 宿主Activity主题配置异常:如果调用评分弹窗的Activity使用了透明主题、设置了
android:windowIsFloating=true、android:windowBackground为透明/黑色,或者添加了FLAG_FULLSCREEN、FLAG_LAYOUT_NO_LIMITS等窗口Flag,会导致谷歌Play服务的评分弹窗继承宿主的窗口属性,遮罩层渲染异常。 - Google Play Core依赖版本过旧:低于1.9.0版本的Play Core库存在已知的评分弹窗渲染兼容bug,在Android 9及以下系统上容易出现黑色背景问题。
- Google Play服务版本过低:老版本Play服务对应用内评分组件的适配不完善,会偶发遮罩层渲染错误。
- Context传入错误:创建ReviewManager时如果传入的是Fragment Context、Application Context这类非Activity上下文,组件无法正确继承Activity的正常主题配置。
修复方案
- 修正ReviewManager创建逻辑,统一使用Activity实例作为上下文,修正后的代码如下:
activity?.let { act -> val manager = ReviewManagerFactory.create(act) val request = manager.requestReviewFlow() request.addOnSuccessListener { reviewInfo -> val flow = manager.launchReviewFlow(act, reviewInfo) flow.addOnSuccessListener { // 评分流程结束后的逻辑 } } }
- 检查调用评分的Activity主题配置,确保以下属性设置正确:
android:windowBackground设置为不透明的正常页面背景色,不要使用@null或者透明色- 移除
FLAG_FULLSCREEN、FLAG_TRANSLUCENT_STATUS等废弃的全屏窗口Flag,如需适配沉浸式状态栏使用官方WindowInsetsController实现 - 确保
android:windowIsFloating为false,android:windowDimAmount保持默认值(推荐0.4-0.6区间)
- 升级Google Play Core依赖到最新稳定版,示例依赖配置:
// 基础版 implementation "com.google.android.play:core:1.10.3" // Kotlin扩展版 implementation "com.google.android.play:core-ktx:1.8.1"
- 若仍存在问题,可引导用户升级Google Play服务到最新版本,绝大部分低版本兼容问题升级后即可解决。
问题现象截图:
内容的提问来源于stack exchange,提问作者M. Gasimov
相关产品推荐
相关产品推荐

