You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发:如何修改Facebook登录流程中进度条的颜色

解决Facebook登录进度条颜色修改无效的问题

我之前也踩过这个坑!你用系统主题属性去改Facebook登录的进度条颜色肯定没用,因为Facebook的FacebookActivity内部用的是自己封装的进度条控件,根本不鸟系统的progressBarStyle配置。给你几个亲测有效的解决办法:

先贴一下你当前的配置,方便大家理解问题:

styles.xml:

<style name="FacebookStyle" parent="android:Theme.Translucent.NoTitleBar"> 
    <item name="android:progressBarStyle">@style/FacebookProgressBarStyle</item> 
</style> 
<style name="FacebookProgressBarStyle"> 
    <item name="android:color">#DBA347</item> 
</style>

AndroidManifest.xml:

<activity android:name="com.facebook.FacebookActivity" 
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
    tools:replace="android:theme" 
    android:theme="@style/FacebookStyle" 
    android:label="@string/app_name" />

办法1:用Facebook专属的主题属性

Facebook SDK其实提供了自己的主题属性来控制进度条,把系统属性换成Facebook的就行:

修改你的styles.xml:

<style name="FacebookStyle" parent="android:Theme.Translucent.NoTitleBar">
    <!-- 替换成Facebook的专属进度条属性 -->
    <item name="facebook:progressBarStyle">@style/CustomFacebookProgress</item>
</style>

<style name="CustomFacebookProgress" parent="@style/Widget.ProgressBar">
    <!-- 指定自定义的进度条drawable -->
    <item name="android:indeterminateDrawable">@drawable/custom_fb_progress</item>
</style>

然后创建res/drawable/custom_fb_progress.xml,用你想要的#DBA347颜色定义进度条:

<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360">

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:width="48dp"
            android:height="48dp" />

        <gradient
            android:centerColor="#DBA347"
            android:endColor="#DBA347"
            android:startColor="#DBA347"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

办法2:代码动态设置颜色

如果主题配置还是不生效,直接在代码里硬刚!在初始化Facebook SDK的时候设置进度条颜色:

在你的Application类或者启动Activity的onCreate里加这段代码:

// 初始化SDK
FacebookSdk.sdkInitialize(getApplicationContext());
// 设置进度条颜色,替换成你的颜色资源
FacebookSdk.setProgressBarColor(ContextCompat.getColor(this, R.color.fb_progress_color));

记得在colors.xml里定义好颜色:

<color name="fb_progress_color">#DBA347</color>

办法3:直接覆盖SDK内置资源

利用Android资源优先级的特性,把Facebook SDK里的进度条drawable替换掉。你可以解压Facebook SDK的aar包(一般在app/build/intermediates/exploded-aar/com.facebook.android/facebook-login/xxx/目录下),找到它的进度条drawable(比如叫com_facebook_progress_bar.xml),然后在你自己项目的res/drawable目录下创建同名文件,用自定义颜色实现就行,这样SDK会优先用你项目里的资源。

最后提醒下:不同版本的Facebook SDK可能细节有差异,比如资源文件名或者属性名,你可以先确认下自己用的SDK版本再调整方案~

内容的提问来源于stack exchange,提问作者anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:02:22