我有一个进度条,样式如下:style="?android:attr/android:progressBarStyleSmall"
不幸的是,这个进度条几乎是白色的,而且在我的情况下显示在白色背景上。进度条因此几乎看不见。
我该如何改变进度条的颜色?深灰色会更好。
我有一个进度条,样式如下:style="?android:attr/android:progressBarStyleSmall"
不幸的是,这个进度条几乎是白色的,而且在我的情况下显示在白色背景上。进度条因此几乎看不见。
我该如何改变进度条的颜色?深灰色会更好。
progressBar.getIndeterminateDrawable().setColorFilter(
getResources().getColor(R.color.light_light_purple),
android.graphics.PorterDuff.Mode.SRC_IN);
该代码将默认的holographic不确定进度条颜色更改为您自己的颜色。
定义您的颜色代码,并将R.color.light_light_purple
替换为R.color.your_color_code
。
要获得黑色进度条,请使用其中一种反转样式:
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Large.Inverse"/>
<ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse"/>
<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替换为您想要的内容。
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
}
我曾经尝试过改变进度条的颜色,但是遇到了很大的困难。为了解决这个问题,我获取了安卓源代码,并创建了自己的ProgressBar类。
虽然不是最好的解决方案,但对我来说起作用了。
答案已经在SO上提供:
stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-android
您可以通过android:indeterminateDrawable
属性更改progressbar中显示的整个drawable。
注意,使用时
<ProgressBar style="@android:style/Widget.ProgressBar.Inverse"/>
如果您想使用任何反向进度条,您必须将最低的Android SDK要求设置为4级(Android 1.6)。
LegacyStyleUtil#adjustLegacyStyle(Context, ProgressBar)
。然后,我从我的活动/片段中调用此方法。public static void adjustLegacyStyle(Context context, ProgressBar progressBar) { if (BuildConfigUtil.isLegacySDK() && progressBar != null) { progressBar.getIndeterminateDrawable().setColorFilter( context.getResources().getColor(R.color.green_progress), PorterDuff.Mode.SRC_IN); } }
- Andy H.