android - 自定义 Firebase-ui 身份验证 Android

标签 android firebase firebase-authentication

最近 Firebase 在 Github 上开源了他们的 Firebase-Auth drop in Authentication System。 Firebase-ui auth Github .尽管这是一个非常好的步骤,但他们还没有发布任何关于我们如何自定义包中存在的所有 UI 的文档。这样做的一种选择是,克隆完整的 repo,然后挖掘代码,修改它,然后在我们的 Android 项目中包含每个类和依赖项。有没有更简单的解决方案?

最佳答案

您可以在 styles.xml 中创建样式资源文件,然后使用它来自定义 Firebase-Auth UI。您可以使用 setTheme() 设置新样式创建 Auth 实例时。

startActivityForResult(
            AuthUI.getInstance()
                    .createSignInIntentBuilder()
                    .setProviders(
                            Arrays.asList(
                                    new AuthUI.IdpConfig.Builder(AuthUI.EMAIL_PROVIDER).build(),
                                    new AuthUI.IdpConfig.Builder(AuthUI.GOOGLE_PROVIDER).build(),
                                    new AuthUI.IdpConfig.Builder(AuthUI.FACEBOOK_PROVIDER).build()
                            )
                    )
                    .setTheme(R.style.LoginTheme)
                    .setLogo(R.mipmap.logo)
                    .build(),
            RC_SIGN_IN);

这是如何配置样式主题的示例。
<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="colorButtonNormal">@color/colorAccent</item>
    <item name="colorControlNormal">@android:color/white</item>
    <item name="colorControlActivated">@android:color/white</item>
    <item name="colorControlHighlight">@android:color/white</item>
    <item name="android:textColor">@android:color/white</item>
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:textColorSecondary">@android:color/white</item>
    <item name="android:windowBackground">@mipmap/bg_login</item>
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:textColorHint">@android:color/white</item>
</style>

使用上述方法,我能够达到这个结果:
enter image description here

这仍然没有提供人们想要的那么大的灵 active ,但您可以在某种程度上对其进行自定义,以便它可以与您品牌的 Logo 和颜色主题一起使用。

如果您想进一步使用这种方法,这些是您可能会发现有用的一些资源:

https://firebaseopensource.com/projects/firebase/firebaseui-android/auth/README.md#ui_customization
https://gist.github.com/cutiko/9942f76504cbb67c8d04ee6632286dbc
https://github.com/firebase/FirebaseUI-Android/issues/229#issuecomment-236868365

关于android - 自定义 Firebase-ui 身份验证 Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44492655/

相关文章:

android - 我的工具栏覆盖我的 map

Android Studio - Gradle 实现 (...) { exclude ... } 不工作(无法从依赖项中排除组)

java - 为什么我收到这样的消息 :java. lang.NoSuchMethodError: No virtual method fetchProvidersForEmail(Ljava/lang/String;)

java - Android 中 user.sendEmailVerification() 上没有虚拟方法 sendEmailVerification() 异常

Android 定期 GPS 位置更新与服务内的 AlarmManager

android - 有没有办法压缩android中的内存以降低高水位线?

javascript - 下一个代码块在获取之前更早执行我该如何解决这个问题

Android Firebase 远程配置 : Application name is not set. 调用 Builder#setApplicationName

java - 如何从 firebase 检索 itemName 并将其用于 searchView?

angular - Firebase: ...node_modules\firebase\app\dist\app\index 没有导出成员 'User'