我尝试使用以下样式
<style name= "AuthStyle">
<item name="android:windowBackground">@drawable/culture</item>
<item name="android:windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
</style>
然后在这里应用上面的样式:
startActivityForResult(AuthUI.getInstance()
.createSignInIntentBuilder()
.setProviders(AuthUI.EMAIL_PROVIDER,
AuthUI.FACEBOOK_PROVIDER,
AuthUI.GOOGLE_PROVIDER)
.setTheme(R.style.AuthStyle)
.build()
,1);
但是,标题栏仍在显示。如果有任何关于如何删除/隐藏它的建议,我将不胜感激
Firebase UI覆盖/忽略了主题中操作栏/应用栏的移除,所以我们必须作弊。In styles.xml
:
<style name="AppThemeFirebaseAuth" parent="android:Theme.Material.Light.NoActionBar">
<item name="android:actionBarStyle">@style/FirebaseAuthActionBarStyle</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="FirebaseAuthActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/white</item>
</style>
(而不是@color/white
,无论你的背景颜色)
启动登录活动的位置:
Intent signInIntent = AuthUI.getInstance().createSignInIntentBuilder()
.setProviders(Arrays.asList(
new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()))
.setTheme(R.style.AppThemeFirebaseAuth)
.setLogo(R.drawable.logo)
.setIsSmartLockEnabled(!BuildConfig.DEBUG)
.build();
请记住,在Firebase UI的未来版本中,操作栏/应用程序栏可能会变得有用或必需,所以这有点危险。
从firebase ui版本4.3.1开始,下面的代码足以隐藏标题栏,不需要对背景颜色做任何操作:
<style name="AppThemeFirebaseAuth" parent="android:Theme.Light.NoTitleBar">
<item name="android:windowActionBarOverlay">true</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
创建AuthUI实例时只引用样式
// Choose authentication providers
List<AuthUI.IdpConfig> providers = Arrays.asList(
new AuthUI.IdpConfig.PhoneBuilder().build());
AuthUI.createSignInIntentBuilder()
.setAvailableProviders(providers)
.setTheme(R.style.AppThemeFirebaseAuth)
.build(),
在android 4.4.2和android 9 (Nexus模拟器)测试