android 进度条 绿色,如何在Android中更改进度条的进度颜色

36 个答案:

答案 0 :(得分:439)

对于水平ProgressBar,您也可以使用ColorFilter,如下所示:

progressBar.getProgressDrawable().setColorFilter(

Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);

0r60D.png

注意:这会修改应用中所有进度条的外观。要仅修改一个特定的进度条,请执行以下操作:

Drawable progressDrawable = progressBar.getProgressDrawable().mutate();

progressDrawable.setColorFilter(Color.RED, android.graphics.PorterDuff.Mode.SRC_IN);

progressBar.setProgressDrawable(progressDrawable);

如果progressBar不确定,请使用getIndeterminateDrawable()代替getProgressDrawable()。

自Lollipop(API 21)起,您可以设置进度色调:

progressBar.setProgressTintList(ColorStateList.valueOf(Color.RED));

BOoLK.png

答案 1 :(得分:266)

我很抱歉这不是答案,但是什么推动了从代码设置它的要求?

如果正确定义,.setProgressDrawable应该可以正常工作

android:startColor="#ff9d9e9d"

android:centerColor="#ff5a5d5a"

android:centerY="0.75"

android:endColor="#ff747674"

android:angle="270"

/>

android:startColor="#80ffd300"

android:centerColor="#80ffb600"

android:centerY="0.75"

android:endColor="#a0ffcb00"

android:angle="270"

/>

android:radius="5dip" />

android:startColor="@color/progress_start"

android:endColor="@color/progress_end"

android:angle="270"

/>

答案 2 :(得分:261)

这不是编程方式,但我认为它可以帮助很多人!

我尝试了很多,最有效的方法是将这些行添加到.xml文件中的ProgressBar中:

android:indeterminate="true"

android:indeterminateTintMode="src_atop"

android:indeterminateTint="@color/secondary"

所以最后这段代码为我做了:

android:id="@+id/progressBar"

style="?android:attr/progressBarStyleLarge"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:layout_centerVertical="true"

android:layout_marginTop="50dp"

android:layout_marginBottom="50dp"

android:visibility="visible"

android:indeterminate="true"

android:indeterminateTintMode="src_atop"

android:indeterminateTint="@color/secondary">

此解决方案适用于API 21 +

答案 3 :(得分:217)

对于我的不确定进度条(微调器),我只是在drawable上设置了一个颜色过滤器。效果很好而且只有一条线。

将颜色设置为红色的示例:

ProgressBar spinner = new android.widget.ProgressBar(

context,

null,

android.R.attr.progressBarStyle);

spinner.getIndeterminateDrawable().setColorFilter(0xFFFF0000, android.graphics.PorterDuff.Mode.MULTIPLY);

U46rN.png

答案 4 :(得分:155)

这是一个老问题,但这里没有提到使用主题。如果您的默认主题使用的是AppCompat,那么您的ProgressBar颜色将为您定义的colorAccent。

更改colorAccent也会改变您的ProgressBar颜色,但这些变化也会反映在多个地方。因此,如果您只想为特定PregressBar设置不同的颜色,则可以通过将主题应用于ProgressBar来实现此目的:

扩展您的默认主题并覆盖colorAccent

@color/white

在ProgressBar中添加android:theme属性:

android:theme="@style/AppTheme.WhiteAccent"

所以它看起来像这样:

android:id="@+id/loading"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_gravity="center"

android:padding="10dp"

android:theme="@style/AppTheme.WhiteAccent" />

因此,您只需更改特定colorAccent的{​​{1}}。

答案 5 :(得分:34)

根据一些建议,您可以指定一个形状并使用颜色进行剪裁,然后进行设置。我以编程方式工作。我就是这样做的。

首先确保导入可绘制的库..

import android.graphics.drawable.*;

然后使用类似于下面的代码;

ProgressBar pg = (ProgressBar)row.findViewById(R.id.progress);

final float[] roundedCorners = new float[] { 5, 5, 5, 5, 5, 5, 5, 5 };

pgDrawable = new ShapeDrawable(new RoundRectShape(roundedCorners, null,null));

String MyColor = "#FF00FF";

pgDrawable.getPaint().setColor(Color.parseColor(MyColor));

ClipDrawable progress = new ClipDrawable(pgDrawable, Gravity.LEFT, ClipDrawable.HORIZONTAL);

pg.setProgressDrawable(progress);

pg.setBackgroundDrawable(getResources().getDrawable(android.R.drawable.progress_horizontal));

pg.setProgress(45);

答案 6 :(得分:32)

所有API

如果使用所有API,只需以样式创建主题

style.xml

//...

@color/blue

并在使用中

...

android:theme

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值