Android:ProgressBar 在 activity 中看起来很奇怪

Android: ProgressBar looks strange in activity

我正在尝试为这个帖子想一个更合适的标题,但无法描述我的问题。

这是我正在使用的进度条 xml 代码:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progressBar"
    android:layout_centerInParent="true"/>

这是我的 AppCompatActivity 中的代码:

progressBar = (ProgressBar) findViewById(R.id.progressBar);
progressBar.setIndeterminate(true);

当 progressBar 启动时,它看起来像这样 - 这看起来像 progressBar 的过时版本:

然后几秒钟后,它变成了这种看起来像新设计的progressBar:

我不希望显示旧的进度条,如何让它从一开始就显示新设计?

这是我在 activity:

中使用的主题
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="Theme.AppCompat.NoActionBar">

    <item name="android:windowBackground">@color/primary</item>
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/deep_orange_500</item>
    <item name="colorControlNormal">@color/iron</item>
    <item name="colorControlActivated">@color/white</item>
    <item name="colorControlHighlight">@color/white</item>
    <item name="android:textColorHint">@color/iron</item>
    <item name="colorButtonNormal">@color/primary_darker</item>
    <item name="android:colorButtonNormal">@color/primary_darker</item>
</style>

我注意到当我更改布局中项目的可见性时会发生这种情况。我有一个登录按钮,单击该按钮会隐藏所有内容并显示进度条。当我单击登录按钮时,屏幕返回并在顶部显示状态栏几秒钟,并且进度条反映了旧的 non-material 主题进度条。当状态栏再次消失时,新的进度条出现在屏幕上。

这让我觉得当项目的可见性改变时主题不被尊重?

我想错了,我把这个样式放在了progressBar上:

    style="@style/Widget.AppCompat.ProgressBar"

删除它会恢复到 material 主题进度条

编辑:

经查,原来是facebook SDK自带progressBar的问题。我不得不按照此线程中的建议将其取出: 为方便起见复制并粘贴到此处。

我在使用 facebook sdk 4.x 时遇到了同样的问题。当我单击 facebook 登录按钮时,Facebook Activity 显示为半透明,但它显示一个进度条。幸运的是,我们可以在主题中禁用这个进度条。所以 Facebook Activity 被声明为

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

我们要做的就是创建一个继承自Theme.Translucent.NoTitleBar并隐藏进度条的样式:

<style name="FullyTranslucent" parent="android:Theme.Translucent.NoTitleBar">
    <item name="android:progressBarStyle">@style/InvisibleProgress</item>
</style>

<style name="InvisibleProgress">
    <item name="android:visibility">gone</item>
</style>

现在将 activity 的主题设置为我们的新主题:

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

瞧!登录前的ProgressBar没有了

这是一个很好的解决方案

style="@android:style/Widget.ProgressBar.Inverse"