21以上的api 可以直接设置颜色 通过coloraccount 或者是android:indeterminateTint="@color/colorPrimary"
在低版本是不行的 所我判断了版本通过加载成一个drawable 来设置
/** * 设置ProgressBar 的颜色 * * @param colorId color 在色值中的颜色 * @param mProgressBar progressBar控件 */ protected void setProgressBarColor(int colorId, ProgressBar mProgressBar) { // fixes pre-Lollipop progressBar indeterminateDrawable tinting if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { Drawable wrapDrawable = DrawableCompat.wrap(mProgressBar.getIndeterminateDrawable()); DrawableCompat.setTint(wrapDrawable, ContextCompat.getColor(this, colorId)); mProgressBar.setIndeterminateDrawable(DrawableCompat.unwrap(wrapDrawable)); } else { mProgressBar.getIndeterminateDrawable().setColorFilter(ContextCompat.getColor(this, colorId), PorterDuff.Mode.SRC_IN); } }在水平方向的progressbar 我们设置一个layer-list
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 设置背景色(蓝色) --> <item android:id="@android:id/background" > <shape> <gradient android:startColor="@color/white" android:endColor="@color/white" /> </shape> </item> <!-- 设置进度条颜色(红色) --> <item android:id="@android:id/progress" > <clip> <shape> <gradient android:startColor="@color/colorPrimary" android:endColor="@color/colorPrimary" /> </shape> </clip> </item> </layer-list>在xml中 android :progressDrawable= "@drawable/progressbar" 通过设置progressDrawable来改变
<ProgressBar android:id="@+id/pb_feedback" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:progressDrawable="@drawable/progressbar" android:max="100" android:layout_height="4dp" />