FirebaseUI认证确认面板自定义:如何调整Alert Dialog可见性?
调整FirebaseUI认证确认弹窗的深色样式
当然可以通过XML主题属性来搞定这个问题!FirebaseUI的认证弹窗本质上复用了Android原生的AlertDialog(或Material Components Dialog),所以我们直接在你的LoginTheme里扩展相关属性就能修改背景或文字颜色,不用写额外的代码。
方法1:自定义AlertDialog主题(推荐)
这种方式更灵活,能精准控制弹窗的每一部分样式。首先在styles.xml里定义一个深色的AlertDialog主题:
<style name="DarkAlertDialogTheme" parent="Theme.MaterialComponents.Dialog.Alert"> <!-- 设置弹窗深色背景 --> <item name="android:windowBackground">@color/dark_background</item> <!-- 设置标题和内容的浅色文字 --> <item name="android:textColorPrimary">@color/light_text</item> <!-- 自定义按钮文字颜色 --> <item name="buttonBarPositiveButtonStyle">@style/DarkDialogButton</item> <item name="buttonBarNegativeButtonStyle">@style/DarkDialogButton</item> </style> <style name="DarkDialogButton" parent="Widget.MaterialComponents.Button.TextButton.Dialog"> <item name="android:textColor">@color/light_accent</item> </style>
然后把这个主题关联到你的LoginTheme中:
<style name="LoginTheme" parent="FirebaseUI"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> <!-- 引用自定义的弹窗主题 --> <item name="alertDialogTheme">@style/DarkAlertDialogTheme</item> </style>
方法2:直接在LoginTheme中覆盖属性
如果不需要太精细的控制,也可以直接在现有主题里添加以下属性,快速修改弹窗样式:
<style name="LoginTheme" parent="FirebaseUI"> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/light_accent</item> <!-- 影响按钮颜色 --> <!-- 设置弹窗深色背景 --> <item name="android:windowBackground">@color/dark_background</item> <!-- 设置弹窗内所有浅色文字 --> <item name="android:textColorPrimary">@color/light_text</item> </style>
补充说明
- 记得在
res/values/colors.xml里定义对应的颜色值,比如:<color name="dark_background">#121212</color> <color name="light_text">#FFFFFF</color> <color name="light_accent">#BB86FC</color> - 如果你使用的是AppCompat库,把
alertDialogTheme换成android:alertDialogTheme即可。 - 不同版本的FirebaseUI可能对主题属性的继承略有差异,但核心的AlertDialog样式属性都是通用的,测试一下就能看到效果。
内容的提问来源于stack exchange,提问作者Toka A. Amin
相关产品推荐
相关产品推荐

