如何在Firebase UI(Android)国家/地区代码选择器中更改文本的颜色

时间:2018-06-20 18:27:54

标签: android firebaseui

我在我的应用中使用Firebase UI 4.0.1,该应用通过AuthUI.getInstance().createSignInIntentBuilder().setTheme(R.style.LoginTheme)使用以下主题

<style name="Base"  parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/primaryColor</item>
    <item name="colorPrimaryDark">@color/primaryDarkColor</item>
    <item name="colorAccent">@color/secondaryColor</item>
    <item name="android:windowBackground">@color/primaryColor</item>
</style>

<style name="Base.AppTheme">
    <!-- Customize your theme here. -->
    <item name="android:editTextStyle">@style/Yas_EditTextStyle</item>
    <item name="editTextStyle">@style/Yas_EditTextStyle</item>
    <item name="android:textColor">@color/primaryTextColor</item>
</style>

<style name="AppTheme" parent="Base.AppTheme">
    <item name="android:windowTranslucentStatus">true</item>
</style>

<style name="LoginTheme" parent="@style/Base">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:alertDialogStyle">@style/Login_AlertDialogStyle</item>
</style>

<style name="Login_AlertDialogStyle" parent="@style/AlertDialog.AppCompat.Light">
    <item name="android:textColorAlertDialogListItem">@android:color/black</item>
    <item name="android:textColor">@android:color/black</item>
</style>

请注意,primaryTextColor是白色的。当我这样做时,一切看起来都很好,直到我打开了国家/地区代码选择器的警报对话框。在那里,我可以看到国家列表,但文字是白色背景上的白色。我正在尝试使该文本为黑色,但白色显示为白色。这是被称为对话框类的链接:https://github.com/firebase/FirebaseUI-Android/blob/master/auth/src/main/java/com/firebase/ui/auth/ui/phone/CountryListSpinner.java#L163

如何确保Firebase UI使用我的Login_AlertDialogStyle

2 个答案:

答案 0 :(得分:0)

尝试将其添加到您的FirebaseUI主题:

<item name="android:alertDialogTheme">@style/Login_AlertDialogStyle</item>

您首先需要在styles.xml中创建自定义FirebaseUI主题,该主题必须从FirebaseUI扩展。然后,您需要通过AuthUI构建器设置此样式:

Styles.xml

<style name="SignInTheme" parent="FirebaseUI">
    <item name="android:alertDialogTheme">@style/Login_AlertDialogStyle</item>
    <!-- Feel free to add anything else you want here -->
</style>

Activity.class

Intent firebaseAuth = AuthUI.getInstance()
    .createSignInIntentBuilder()
    .setTheme(R.style.SignInTheme) // set your sign in theme here
    .setAvailableProviders(Arrays.asList(
        new AuthUI.IdpConfig.PhoneBuilder().build(),
        new AuthUI.IdpConfig.GoogleBuilder().build()))
    .build();

有关自定义用户界面的更多信息,https://github.com/firebase/FirebaseUI-Android/blob/master/auth/README.md#ui-customization

答案 1 :(得分:0)

这是对我有用的代码

<style name="FirebaseUI.TextInputEditText">
    <item name="android:layout_width">match_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textColor">@android:color/white</item>
</style>