Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:ProgressBar在活动中看起来很奇怪_Android_Android Progressbar - Fatal编程技术网

Android:ProgressBar在活动中看起来很奇怪

Android:ProgressBar在活动中看起来很奇怪,android,android-progressbar,Android,Android Progressbar,我试图为这篇文章想出一个更合适的标题,但无法描述我的问题 下面是我正在使用的progressBar xml代码: <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/progressBar" android:layout_centerInParent="true"/> 当progressBar启动时

我试图为这篇文章想出一个更合适的标题,但无法描述我的问题

下面是我正在使用的progressBar xml代码:

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/progressBar"
    android:layout_centerInParent="true"/>
当progressBar启动时,它看起来像这样-看起来像是progressBar的过时版本:

几秒钟后,它会变为这种类型的progressBar,看起来像新设计:

我如何让它从一开始就显示新设计,因为我不希望显示外观较旧的progressBar

这是我在活动中使用的主题:

<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>
我注意到,当我更改布局中项目的可见性时,会发生这种情况。我有一个登录按钮,当点击时会隐藏所有内容并显示progressBar。当我单击login按钮时,屏幕返回到顶部显示状态栏几秒钟,progressBar反映了旧的非实质性主题progressBar。当状态栏再次消失时,屏幕上会出现新的进度栏


这让我觉得,当项目的可见性发生变化时,主题就没有得到尊重

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

删除它使其恢复为材质主题进度栏

编辑:

经过进一步调查,这实际上是由于facebook SDK中包含的progressBar。我不得不按照这条线索中的建议把它取出来:为了方便起见,复制并粘贴在这里

我在FacebookSDK4.x上也有同样的问题。当我点击facebook登录按钮时,facebook活动看起来是半透明的,但它会显示一个进度条。幸运的是,我们可以在主题中禁用此进度条。因此,Facebook活动被宣布为

<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.transparent.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
    android:name="com.facebook.FacebookActivity"
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label="@string/app_name"
    android:theme="@style/FullyTranslucent" />

瞧!登录前的进度条已消失。

看起来像material主题,我想是这样,但不知道如何将其更改为material主题-我已将样式附加到此帖子中。使用AppCompat主题,但我使用的是AppCompat。您可以设置style=@style/Widget.AppCompat.ProgressBar
<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
    android:name="com.facebook.FacebookActivity"
    android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:label="@string/app_name"
    android:theme="@style/FullyTranslucent" />