移除Android端react-native-google-signin谷歌账号选择弹窗深色遮罩
解决Android上react-native-google-signin登录对话框遮罩透明的问题
嘿,这个问题我刚好折腾过!答案是完全可以实现,不过得通过Android原生项目的配置来调整——毕竟react-native-google-signin本身并没有直接提供修改这个遮罩的React Native层面API。下面是具体的操作步骤:
第一步:找到并修改主题配置文件
打开你的React Native项目的Android部分,定位到android/app/src/main/res/values/styles.xml(如果你的项目适配了深色模式,还要同步修改values-night/styles.xml)。在里面添加一个自定义主题,继承默认的Material主题,然后调整遮罩透明度:<style name="CustomGoogleSignInTheme" parent="Theme.MaterialComponents.Light.NoActionBar"> <!-- 控制是否启用背景遮罩 --> <item name="android:backgroundDimEnabled">true</item> <!-- 设置遮罩透明度:0.0是完全透明,1.0是完全深色遮罩 --> <item name="android:backgroundDimAmount">0.0</item> </style>第二步:给谷歌登录关联的Activity设置自定义主题
打开android/app/src/main/AndroidManifest.xml,找到(如果没有就添加)SignInHubActivity的声明,给它指定我们刚才创建的自定义主题:<activity android:name="com.google.android.gms.auth.api.signin.internal.SignInHubActivity" android:theme="@style/CustomGoogleSignInTheme" android:excludeFromRecents="true" />
额外注意事项
- 如果上面的属性不生效,可能是因为你的项目使用的主题版本不同,可以尝试替换属性为
android:windowBackgroundDimAmount,或者检查主题的父类是否匹配你的项目配置(比如用Theme.AppCompat.Light.NoActionBar代替MaterialComponents的主题)。 - 修改这个主题可能会影响谷歌服务相关的其他弹窗,所以完成配置后一定要多测试几种登录场景,确保没有其他异常。
内容的提问来源于stack exchange,提问作者Rodrigo Vasconcelos
相关产品推荐
相关产品推荐

