如何更改无限期ProgressBar的颜色?

时间:2010-04-28 12:01:21

标签: android layout progress-bar

我有一个具有以下风格的进度条:style="?android:attr/android:progressBarStyleSmall"

可悲的是,酒吧几乎是白色的,在我的情况下显示在白色背景上。 因此,进度条几乎不可见。

如何更改进度条的颜色?深灰色会很棒。

7 个答案:

答案 0 :(得分:40)

progressBar.getIndeterminateDrawable().setColorFilter(
            getResources().getColor(R.color.light_light_purple),
            android.graphics.PorterDuff.Mode.SRC_IN);

此代码将默认的holo inderminate可绘制颜色更改为您自己的颜色。 定义颜色代码并将R.color.light_light_purple替换为R.color.your_color_code

答案 1 :(得分:25)

要获得黑色ProgressBar,请使用其中一种反向样式:

<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>

答案 2 :(得分:10)

条形图具有该颜色的原因在于您选择的样式。这是一种固定的样式,并使用系统主题来生成UI元素。

查看here的源代码。此progressBarStyleSmall属性使用定义的样式here

<style name="Widget.ProgressBar.Small">
    <item name="android:indeterminateDrawable">@android:drawable/progress_small_white</item>
    <item name="android:minWidth">16dip</item>
    <item name="android:maxWidth">16dip</item>
    <item name="android:minHeight">16dip</item>
    <item name="android:maxHeight">16dip</item>
</style>

只需按照android源代码中的示例创建自定义样式即可。您需要将android:indeterminateDrawable替换为您想要的内容。

答案 3 :(得分:3)

public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
    mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
}

答案 4 :(得分:2)

我很难改变它的颜色。为了解决这个问题,我获得了android的src代码并完成了自己的ProgressBar类。

不是最好的答案,但它对我有用。

答案 5 :(得分:2)

答案已经在SO上了:

stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-android

您只需通过android:indeterminateDrawable属性更改进度条中显示的整个drawable即可。

答案 6 :(得分:1)

只需注意,即可使用

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

或任何反向进度条,你必须将你的最低android sdk要求设置为4级(Android 1.6)。