水平ProgressBar颜色更改

时间:2015-09-24 13:14:26

标签: android

我在xml中声明了进度条。

<ProgressBar
    android:id="@+id/pbSurvey"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="match_parent"
    android:layout_height="8dp"
    android:layout_above="@+id/lblSkipSurvey"
    android:layout_marginBottom="5dp"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginTop="10dp"
    android:maxHeight="10dip"
    android:minHeight="10dip"
    android:progress="50"
    android:visibility="visible" />

在运行时,我将progressBar的进度颜色更改为白色。

 pbSurvey.setProgress(progress);
 pbSurvey.getProgressDrawable().setBounds(bounds);
 pbSurvey.getIndeterminateDrawable().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC);

每次只显示深绿色。没有为进度条设置主题和样式。提前致谢

2 个答案:

答案 0 :(得分:0)

我目前正在使用这段代码:

    public static final float[] roundedCorners = new float[] { 5,5,5,5,5,5,5,5 };
    final ShapeDrawable pgDrawable = new ShapeDrawable(new RoundRectShape(Constants.roundedCorners, null, null));
    final LinearGradient gradient = new LinearGradient(0, 0, displayWidth / 2, 0, ctx.getResources().getColor(
            color.aa_blue), ctx.getResources().getColor(color.aa_red), android.graphics.Shader.TileMode.CLAMP);
    pgDrawable.getPaint().setStrokeWidth(3);
    pgDrawable.getPaint().setDither(true);
    pgDrawable.getPaint().setShader(gradient);

    ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);
    par.setProgressDrawable(progress);
    par.setBackgroundResource(android.R.drawable.progress_horizontal);

它正在做一个带阴影的颜色进度条,您可以使用它或只是在两侧设置相同的颜色。我猜您的错误是使用pbSurvey.getIndeterminateDrawable().setColorFilter(),而您应该拨打pbSurvey.setBackgroundResource()

答案 1 :(得分:0)

我用它来改变progressBar的颜色,没有渐变简单的颜色变化。

progressBar = (ProgressBar) rootView.findViewById(R.id.progressBar);
progressBar.getProgressDrawable().setColorFilter(getResources().getColor(R.color.colorPrimary), PorterDuff.Mode.SRC_IN);

R.color.colorPrimary在我的相应文件夹中,需要相应更改。