如何更改android不确定的ProgressBar颜色?

我正在寻找一个非常明显的东西(用其他语言!!),这让我疯狂!

我想知道如何将不确定的ProgressBar颜色从基础白/灰色更改为黑色? 当我改变indeterminateDrawable,我得到一个静态图像,而不是一个移动的animationprogressBar。 有什么办法可以简单地在XML中做到这一点?

谢谢 !

要在白色/浅色背景上使用的默认主题中获取ProgressBar,请使用以下其中一种逆向样式:

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

这通常会在透明ProgressBar上给你一个黑色,但是一些操作系统安装使用自定义资源。 如果你正在寻找一个特定的颜色,你将不得不按照CommonsWare提供的说明推出你自己的drawable。

 progressBar.getIndeterminateDrawable().setColorFilter( getResources().getColor(Your_Color), android.graphics.PorterDuff.Mode.SRC_IN); 

并用所需的颜色replaceYour_Color,如:R.color.your_color_code

我制作示例项目并在我的博客中发布。 请看, http://www.hrupin.com/2011/09/21/how-to-make-custom-indeterminate-progressbar-in-android-or-how-to-change-progressbar-style-or-color

希望,它可以帮助你

我看到其他答案是相当古老的,为了改变不确定的ProgressBar颜色,你只需要在你的ProgressBar项目中直接在XML中设置android:indeterminateTintandroid:indeterminateTintMode属性:

 <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:indeterminateTint="@color/colorPrimary" android:indeterminateTintMode="src_in" android:indeterminate="true" /> 

android:indeterminateTint – 应用于不确定进度指示器的色调。

必须是"#rgb""#argb" "#rgb""#argb" "#rrggbb""#aarrggbb"或对资源@color/colorPrimary的引用的@color/colorPrimary

android:indeterminateTintMode – 用于应用进度指示符tint的混合模式。

必须是以下常数值之一:
addmultiplyscreensrc_atopsrc_insrc_over

这些属性的Getter和Setter方法是:

  • getIndeterminateTintList()
  • getIndeterminateTintMode()
  • setIndeterminateTintList(ColorStateList tint)
  • setIndeterminateTintMode(PorterDuff.Mode tintMode)

所有这些都是在API级别21中添加的

 <?xml version="1.0" encoding="UTF-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background" android:drawable="@drawable/bg" /> <item android:id="@android:id/secondaryProgress" android:drawable="@drawable/secondary" /> <item android:id="@android:id/progress" android:drawable="@drawable/progress" /> </layer-list> 

实际上所有你需要做的(对于cirle和酒吧)是创build一个xml文件绘制如下所示…… progress_spinner_001指向任何图像你想animation和持续时间…你想多久显示每个框架…….和设置你的android:indeterminateDrawable = filename_in_drawable ….

 <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:oneshot="false"> <item android:drawable="@drawable/progress_spinner_001" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_002" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_003" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_004" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_005" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_006" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_007" android:duration="300" /> <item android:drawable="@drawable/progress_spinner_008" android:duration="300" /> </animation-list> 

您可能需要调整进度条以根据需要显示