【发布时间】:2011-02-13 07:47:06
【问题描述】:
我有一个进度条,样式如下:style="?android:attr/android:progressBarStyleSmall"
遗憾的是,该栏几乎是白色的,在我的情况下显示在白色背景上。 因此,进度条几乎不可见。
如何更改进度条的颜色?深灰色会很棒。
【问题讨论】:
标签: android layout progress-bar
我有一个进度条,样式如下:style="?android:attr/android:progressBarStyleSmall"
遗憾的是,该栏几乎是白色的,在我的情况下显示在白色背景上。 因此,进度条几乎不可见。
如何更改进度条的颜色?深灰色会很棒。
【问题讨论】:
标签: android layout progress-bar
我很难改变它的颜色。为了解决这个问题,我得到了android的src代码,并做了我自己的ProgressBar类。
不是最好的答案,但它对我有用。
【讨论】:
条形图是那种颜色的原因是因为你选择的样式。这是一种固定的样式,使用系统主题来生成 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 替换为您想要的。
【讨论】:
答案已经在 SO:
stackoverflow.com/questions/2020882/how-to-change-progress-bars-progress-color-in-android
您可以通过android:indeterminateDrawable 属性简单地更改进度条中显示的整个drawable。
【讨论】:
要获得黑色 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 style="@android:style/Widget.ProgressBar.Inverse"/>
或任何反向进度条,您必须将最低 android sdk 要求设置为 4 级(Android 1.6)。
【讨论】:
public static void setColorOfProgressBar(ProgressBar mProgressBar, int mColor){
mProgressBar.getIndeterminateDrawable().setColorFilter(mColor, android.graphics.PorterDuff.Mode.MULTIPLY);
}
【讨论】:
progressBar.getIndeterminateDrawable().setColorFilter(
getResources().getColor(R.color.light_light_purple),
android.graphics.PorterDuff.Mode.SRC_IN);
此代码将默认的全息终止可绘制颜色更改为您自己的颜色。
定义您的颜色代码并将R.color.light_light_purple 替换为R.color.your_color_code。
【讨论】:
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); } }