如何更改进度条的默认颜色?

时间:2011-06-21 06:23:46

标签: android android-layout progress-bar

我在我的Activty中使用循环ProgressBar。我的问题是它在我的页面上看不到,因为我的页面的BG颜色与ProgressBar相同。所以我怎样才能改变颜色ProgressBar 使其正常可见? 请帮忙

14 个答案:

答案 0 :(得分:44)

请创建一个xml文件名progress.xml并将其放在res / xml文件夹中,并在该xml文件中写下以下代码。

 <?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
    android:toDegrees="360">
    <shape android:shape="ring" android:innerRadiusRatio="3"
        android:thicknessRatio="8" android:useLevel="false">

        <size android:width="76dip" android:height="76dip" />
        <gradient android:type="sweep" android:useLevel="false"
            android:startColor="#447a29" 
            android:endColor="#447a29"
            android:angle="0"
             />
    </shape>
</rotate> 

创建此xml文件后,将progressbars背景设置为此xml ..

<ProgressBar
  android:id="@+id/ProgressBar01" 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:background = "@xml/progress">

答案 1 :(得分:27)

这是一个老问题,但这里没有提到使用主题。如果您的默认主题使用的是AppCompat,那么您的ProgressBar颜色将为您定义的colorAccent

更改colorAccent也会更改ProgressBar的颜色,但这些更改也会反映在多个地方。因此,如果您只想为特定ProgressBar设置不同的颜色,则可以通过仅将主题应用于ProgressBar来实现此目的:

  • 扩展您的默认主题并覆盖colorAccent

    <style name="AppTheme.WhiteAccent">
        <item name="colorAccent">@color/white</item> <!-- Whatever color you want-->
    </style>
    
  • ProgressBar中添加android:theme属性:

    android:theme="@style/AppTheme.WhiteAccent"
    

所以它看起来像这样:

<ProgressBar
        android:id="@+id/loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:theme="@style/AppTheme.WhiteAccent" />

因此,您只需更改特定colorAccent的{​​{1}}。

注意:使用ProgressBar无效。您只需要使用style。 您可以在此处找到更多主题用法:https://plus.google.com/u/0/+AndroidDevelopers/posts/JXHKyhsWHAH

修改

以下是以编程方式更改ProgressBar颜色的代码。

android:theme

答案 2 :(得分:10)

最简单的方法是使用 android:indeterminateTint属性:

<ProgressBar
        android:indeterminate="true"
        android:indeterminateTint="@android:color/black"
        ........... />

答案 3 :(得分:1)

在xml中你可以像这样应用颜色

<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/loader"
    android:indeterminateTint="@color/my_color"
    android:layout_centerInParent="true"/>

答案 4 :(得分:1)

创建进度可绘制文件

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

<item android:id="@android:id/background">
    <shape>
        <corners android:radius="5dip" />
        <solid android:color="@color/colorWhite" />
    </shape>
</item>

<item android:id="@android:id/secondaryProgress">
    <clip>
        <shape>
            <corners android:radius="5dip" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </clip>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <corners
                android:radius="5dip" />
            <solid android:color="@color/colorPrimary" />
        </shape>
    </clip>
</item>

并设置 的机器人:progressDrawable =&#34; @可绘制/ app_progressbar_back&#34;

像这样

<ProgressBar
                android:id="@+id/dialogProgressView"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:progressDrawable="@drawable/app_progressbar_back"
                android:progress="50"
                android:layout_marginTop="@dimen/margin_20" />

答案 5 :(得分:1)

转到.xml文件中进度栏的声明:


然后粘贴这行代码:

android:indeterminateTint="@color/white"

上面的示例使您可以将进度条的颜色更改为白色现在,由您决定适应您想要的颜色

仅适用于Android API> = 21

答案 6 :(得分:0)

您也可以只更改属性

android:indeterminateDrawable="@drawable/yourxmlfile"

并保持这种风格

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

答案 7 :(得分:0)

这是你如何通过java代码来实现的。

progressBar.getProgressDrawable().setColorFilter(ContextCompat.getColor(getActivity(),R.color.product_status_color), PorterDuff.Mode.MULTIPLY)

答案 8 :(得分:0)

以下是一些解释。要更改Indeterminate ProgressBar的背景,您需要旋转环,因为它会旋转。在@Chirag的回答中,他定义了一个旋转环并将其应用于ProgressBar的背景。如果您有Horizontal ProgressBar,则需要rectangle

PS:我没有尝试过其他形状。

答案 9 :(得分:0)

您还可以在活动中以编程方式更改进度条的颜色oncreate或您的片段onViewCreated()

pBar.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);

此处应用的颜色为“0xFFFF0000”,为红色。您可以根据需要进行更改

答案 10 :(得分:0)

我正在使用android 2.3.1版本。我创建了一个名为progressbar的xml文件,并在布局进度条标记android:progressDrawable =“ @ drawable / progressbar”

中对其进行了调用

<item android:id="@+id/progress">
    <clip>
    <shape>
        <gradient android:startColor="@color/textColor"
            android:centerColor="@color/textColor"
            android:endColor="@color/textColor"
            android:gradientRadius="20dp"
            >
        </gradient>
    </shape>
    </clip>
</item>

答案 11 :(得分:0)

对我来说,必须有这两行才能起作用并更改颜色:

android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"

PS:但仅可用于android 21

答案 12 :(得分:0)

Chirag的答案是正确的,但并非全部。
我认为XML文件应如下所示:

<ProgressBar
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:indeterminateDrawable="@drawable/progress"/>

答案 13 :(得分:-1)

尝试在XML中使用它

android:indeterminateDrawable="@drawable/yourxmlfile"

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