我有一个具有以下风格的进度条:style="?android:attr/android:progressBarStyleSmall"
可悲的是,酒吧几乎是白色的,在我的情况下显示在白色背景上。 因此,进度条几乎不可见。
如何更改进度条的颜色?深灰色会很棒。
答案 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)。