自定义Firebase ui验证Android
最近,Firebase在Github上公开了他们的Firebase Auth插件身份验证系统。尽管这是一个非常好的步骤,但他们还没有发布任何关于如何定制软件包中所有UI的文档。这样做的一个选择是,克隆完整的repo,然后深入挖掘代码,修改它,然后在我们的Android项目中包含每个类、依赖项。有更简单的解决方案吗?您可以在自定义Firebase ui验证Android,android,firebase,firebase-authentication,Android,Firebase,Firebase Authentication,最近,Firebase在Github上公开了他们的Firebase Auth插件身份验证系统。尽管这是一个非常好的步骤,但他们还没有发布任何关于如何定制软件包中所有UI的文档。这样做的一个选择是,克隆完整的repo,然后深入挖掘代码,修改它,然后在我们的Android项目中包含每个类、依赖项。有更简单的解决方案吗?您可以在style.xml资源文件中创建一个样式,然后使用该样式自定义Firebase Auth UI。创建Auth实例时,可以使用setTheme()设置新样式 startActiv
style.xml
资源文件中创建一个样式,然后使用该样式自定义Firebase Auth UI。创建Auth实例时,可以使用setTheme()
设置新样式
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>
@颜色/原色
@颜色/原色暗
@颜色/颜色重音
@颜色/颜色重音
@android:彩色/白色
@android:彩色/白色
@android:彩色/白色
@android:彩色/白色
@android:彩色/白色
@android:彩色/白色
@mipmap/bg\u登录
假的
真的
@android:彩色/白色
使用上述方法,我能够实现以下结果:
这仍然不能提供你想要的那么多灵活性,但是你可以在一定程度上对它进行定制,这样它就可以与你的品牌标志和颜色主题配合使用
如果您想进一步使用此方法,您可以从以下资源中找到一些有用的信息:
在styles.xml资源文件中创建以下样式 1.全屏主题:
<style name="FullscreenTheme" parent="AppTheme">
<item name="android:actionBarStyle">@style/FullscreenActionBarStyle</item>
<item name="android:windowActionBarOverlay">true</item>
<item name="android:windowBackground">@drawable/bg_login</item>
<item name="metaButtonBarStyle">?android:attr/buttonBarStyle</item>
<item name="metaButtonBarButtonStyle">?android:attr/buttonBarButtonStyle</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="colorControlNormal">@color/colorWhite</item>
<item name="colorControlActivated">@color/colorWhite</item>
<item name="colorControlHighlight">@color/colorWhite</item>
</style>
<style name="FullscreenActionBarStyle" parent="Widget.AppCompat.ActionBar">
<item name="android:background">@color/colorPrimary</item>
</style>
如果您想自定义身份验证屏幕,而仅更改样式对您来说不起作用,您也可以使用以下方法:
AuthMethodPickerLayout customLayout = new AuthMethodPickerLayout
.Builder(R.layout.your_custom_layout_xml)
.setGoogleButtonId(R.id.bar)
.setEmailButtonId(R.id.foo)
// ...
.setTosAndPrivacyPolicyId(R.id.baz)
.build();
startActivityForResult(
AuthUI.getInstance(this).createSignInIntentBuilder()
// ...
.setAuthMethodPickerLayout(customLayout)
.build());
这允许您创建自定义布局,并且您可以为正在使用的不同登录提供程序定义ID,以便Firebase可以在单击这些按钮时自动调用正确的提供程序
有关更多信息,请阅读以下内容:FirebaseUI始终是开源的。实际上,没有关于代码分叉和修改的指南。仅链接的答案并不是好的答案。请编辑您的问题,将您链接中回答OP问题的相关部分包括在内,或者将您的答案全部删除(有用的链接可以用于评论)您是如何将徽标居中的。我的右边对齐。另外,如何防止在Firebase AuthUI之前加载主活动。在我的例子中,主活动的加载速度比Firebase AuthUI快。我认为这可能是背景图像的问题,但即使没有背景图像,它仍然是一样的
<item android:drawable="@mipmap/cool_photo"/>
<item android:top="120dp">
<bitmap
android:src="@mipmap/your_logo"
android:gravity="top|center_horizontal" />
</item>
<style name="FirebaseUI.EditText">
<item name="android:paddingBottom">14dp</item>
<item name="android:paddingTop">14dp</item>
<item name="android:layout_width">match_parent</item>
<item name="android:layout_height">wrap_content</item>
<item name="colorControlActivated">@color/colorWhite</item>
<item name="colorControlHighlight">@color/colorWhite</item>
<item name="android:textColorHint">@color/colorWhite</item>
<item name="android:textColor">@color/colorWhite</item>
</style>
<style name="FirebaseUI.Text.TextInputLayout" parent="@style/FirebaseUI.EditText" />
<style name="FirebaseUI.Text.HintText" parent="@style/FirebaseUI.EditText" />
<style name="FirebaseUI.Text.Link">
<item name="android:textColor">@color/colorBlue</item>
</style>
.setAvailableProviders(Collections.singletonList(
new AuthUI.IdpConfig.PhoneBuilder()
.build()))
.setTheme(R.style.LoginTheme)
.setLogo(R.drawable.urlogo)
.setTosAndPrivacyPolicyUrls("https://urls","https://urls")
.build();
AuthMethodPickerLayout customLayout = new AuthMethodPickerLayout
.Builder(R.layout.your_custom_layout_xml)
.setGoogleButtonId(R.id.bar)
.setEmailButtonId(R.id.foo)
// ...
.setTosAndPrivacyPolicyId(R.id.baz)
.build();
startActivityForResult(
AuthUI.getInstance(this).createSignInIntentBuilder()
// ...
.setAuthMethodPickerLayout(customLayout)
.build());