如何更改圆形进度条的颜色?

     2023-04-18     258

关键词:

【中文标题】如何更改圆形进度条的颜色?【英文标题】:How to change color in circular progress bar? 【发布时间】:2011-07-17 07:03:54 【问题描述】:

我在 Android 上使用循环进度条。我想改变它的颜色。我正在使用

"?android:attr/progressBarStyleLargeInverse" 

风格。那么如何改变进度条的颜色呢。

如何自定义样式?另外,风格的定义是什么?

【问题讨论】:

【参考方案1】:

适用于 API 21 及更高版本。只需设置 indeterminateTint 属性。喜欢:

android:indeterminateTint="@android:color/holo_orange_dark"

支持 API 21 之前的设备:

mProgressSpin.getIndeterminateDrawable()
                .setColorFilter(ContextCompat.getColor(this, R.color.colorPrimary), PorterDuff.Mode.SRC_IN );

【讨论】:

style="?android:attr/progressBarStyle" 不起作用 如果我有一个颜色数组,并且我想在每个进度条上将颜色设置为一个颜色数组 这对我来说很好,只是为了改变进度条环颜色:) 感谢您强调 API 方面 如果我使用这种颜色,它会为旋转的切割环着色,但全部着色,所以它会变成一个完整的环,所以你看不到它在移动【参考方案2】:

在 res/drawable 文件夹中,放这个:

progress.xml

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
      android:pivotX="50%" 
      android:pivotY="50%" 
      android:fromDegrees="0"
      android:toDegrees="360">

    <shape 
        android:shape="ring" 
        android:innerRadiusRatio="3"
        android:thicknessRatio="8" 
        android:useLevel="false">

    <size 
        android: 
        android: />

    <gradient 
        android:type="sweep" 
        android:useLevel="false"
        android:startColor="#447a29" 
        android:endColor="#00ffffff"
        android:angle="0"/>

    </shape>

</rotate> 

根据您的选择设置startColorendColor

现在将progress.xml 设置在ProgressBar 的背景中。

像这样

<ProgressBar
  android:id="@+id/ProgressBar01" 
 android:layout_
 android:layout_
 android:indeterminateDrawable="@drawable/progress"
 />

【讨论】:

当我使用自定义对话框作为列表视图标题时,它不起作用。是否需要另一种方法? 这会创建一个绿色的环形,但实际 ProgressBar 的微调器仍然可见。 有没有办法让旋转的颜色只向一个方向移动? 不要使用“android:background”设置背景,而是使用“android:indeterminateDrawable="@drawable/progress”,正如另一个答案所强调的那样 使用不同的 android:startColor="#447a29" android:endColor="#227a29" 值,这样它就不会形成一个静态圆圈。【参考方案3】:

1.首先在resource下的drawable文件夹中创建一个xml文件

命名为“progress.xml”

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="360" >

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false" >

    <size
        android:
        android: />

    <gradient
        android:angle="0"
        android:endColor="color/pink"
        android:startColor="@android:color/transparent"
        android:type="sweep"
        android:useLevel="false" />

    </shape>

</rotate>

2.然后使用以下 sn-p 制作进度条

<ProgressBar
    style="?android:attr/progressBarStyleLarge"
    android:layout_
    android:layout_
    android:layout_above="@+id/relativeLayout1"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="20dp"
    android:indeterminate="true"
    android:indeterminateDrawable="@drawable/progress" />

【讨论】:

嗨 Muhamed,我正在使用自定义进度轮,我尝试在运行时更改进度轮的颜色。我试过了,一旦我点击一个按钮,进度就会开始。我已将颜色设置为绿色。进度达到 100% 后,我希望它重新开始,只是这次它的颜色应该是红色。但是,我无法做到这一点.. 如果可能,请帮助我 谢谢。它工作 100%。将 progress.xml 设置为 android:indeterminateDrawable 当我尝试这个时,它创建了一个圆形的粗边框。任何想法如何减少边界? 嗨 Tejas,尝试在 progress.xml 中更改这一行 android:thicknessRatio="8" 。您可以尝试不同的值。希望它会奏效。 它可以工作,但不是两个环相互旋转,我只得到一个环。有什么解决办法吗?【参考方案4】:

您可以使用以下代码以编程方式更改颜色:

ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
                        android.graphics.PorterDuff.Mode.MULTIPLY);

如果你想改变 ProgressDialog 的进度条颜色,你可以使用这个:

mDilog.setOnShowListener(new OnShowListener() 
        @Override
        public void onShow(DialogInterface dialog) 
            ProgressBar v = (ProgressBar)mDilog.findViewById(android.R.id.progress);
            v.getIndeterminateDrawable().setColorFilter(0xFFcc0000,
                    android.graphics.PorterDuff.Mode.MULTIPLY);

        
    );

【讨论】:

嘿,我将如何将 ProgressDialog 的进度条与 Progress.xml 连接起来?? 如果我有一个颜色数组,并且我想在每个进度条上将颜色设置为一个颜色数组【参考方案5】:

为了补充 Dato 的答案,我发现 SRC_ATOP 是一个更可取的乘法过滤器,因为它更好地支持 alpha 通道。

ProgressBar v = (ProgressBar) findViewById(R.id.progress);
v.getIndeterminateDrawable().setColorFilter(0xFFcc0000, android.graphics.PorterDuff.Mode.SRC_ATOP);

【讨论】:

在 2.3.x 上,这会给你一个实心圆,其中 MULTIPLY 保留透明度。 如果我有一个颜色数组,并且我想在每个进度条上将颜色设置为一个颜色数组 使用兼容版本:progressBar.indeterminateDrawable.colorFilter = BlendModeColorFilterCompat.createBlendModeColorFilterCompat(0xffffff, BlendModeCompat.SRC_ATOP)【参考方案6】:

android:indeterminateTint="@color/progressbar"

【讨论】:

只需在进度条中使用上述属性 :indeterminateTint= your colour 最佳答案,它也将支持所有版本 这就是你所需要的,而不是这些疯狂的答案。尽管其他人会从完整的代码块中受益。 indeterminateTint 适用于 API 21 或更高版本。如果这对你有用,那就太好了!【参考方案7】:

styles.xml

<style name="CircularProgress" parent="Theme.AppCompat.Light">
    <item name="colorAccent">@color/yellow</item>
</style>

  <ProgressBar
        android:layout_
        android:layout_
        android:indeterminate="true"
        style="@style/Widget.AppCompat.ProgressBar"
        android:theme="@style/CircularProgress"/>

【讨论】:

i think this will help you【参考方案8】:

这对我有用。

<ProgressBar
android:id="@+id/ProgressBar01" 
android:layout_
android:layout_
android:indeterminateTint="@color/black"/>

【讨论】:

API 级别 21 可用【参考方案9】:

要自定义圆形 ProgressBar,我们需要创建一个 indeterminateDrawable 来显示自定义进度条

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="1">

    <shape
        android:innerRadiusRatio="3"
        android:shape="ring"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:
            android: />

        <gradient
            android:centerColor="#f96047"
            android:centerY="0.50"
            android:endColor="#fb9c8d"
            android:startColor="#f72d0c"
            android:type="sweep"
            android:useLevel="false" />

    </shape>

</rotate>

我们需要在进度条中包含drawable,如下所示:

<ProgressBar
    android:layout_
    android:layout_centerInParent="true"
    style="?android:attr/progressBarStyleLarge"
    android:visibility="visible"
    android:progressDrawable="@drawable/widget_progressbar"
    android:indeterminateDrawable="@drawable/widget_progressbar"
    android:layout_ />

【讨论】:

rotatetag 在shape 之前丢失。没有它,进度条将是静态的 @RenanBandeira 如果答案正确,您可以改进答案【参考方案10】:

检查这个answer:

对我来说,这两条线必须在那里才能工作并改变颜色:

android:indeterminateTint="@color/yourColor"
android:indeterminateTintMode="src_in"

PS:但它仅适用于 android 21

【讨论】:

唯一最简单的解决方案【参考方案11】:

对我来说,主题不适用于 AccentColor。但它确实适用于 colorControlActivated

    <style name="Progressbar.White" parent="AppTheme">
        <item name="colorControlActivated">@color/white</item>
    </style>

  <ProgressBar
        android:layout_
        android:layout_
        android:indeterminate="true"
        android:theme="@style/Progressbar.White"/>

【讨论】:

【参考方案12】:
<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
    <item name="colorControlActivated">@color/colorPrimary</item>
</style>


<ProgressBar
    android:id="@+id/progressBar"
    android:layout_
    android:theme="@style/progressColor"
    android:layout_
    android:layout_centerInParent="true" />

【讨论】:

【参考方案13】:

通过材质组件库,您可以使用具有以下属性的 CircularProgressIndicator

indicatorColor

trackColor

      <com.google.android.material.progressindicator.CircularProgressIndicator
          android:indeterminate="true"
          app:trackColor="@color/..."
          app:indicatorSize="90dp"
          app:indicatorColor="@color/..."
          />

【讨论】:

这个应该是 2021 年目前公认的【参考方案14】:

添加到您的活动主题,项目 colorControlActivated,例如:

    <style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
            ...
            <item name="colorControlActivated">@color/rocket_black</item>
            ...
    </style>

将此样式应用于清单中的 Activity:

<activity
    android:name=".packege.YourActivity"
    android:theme="@style/AppTheme.NoActionBar"/>

【讨论】:

【参考方案15】:

补充Muhamed Riyas M's票数最高的答案:

更快的旋转

android:toDegrees="1080"

较薄的戒指

android:thicknessRatio="16"

浅白色

android:endColor="#80ffffff"

【讨论】:

【参考方案16】:

尝试使用样式并将 colorControlActivated 设置为所需的 ProgressBar 颜色。

<style name="progressColor" parent="Widget.AppCompat.ProgressBar">
    <item name="colorControlActivated">@color/COLOR</item>
</style>

然后将 ProgressBar 的主题设置为新样式。

<ProgressBar
    android:id="@+id/progress_bar"
    android:layout_
    android:layout_
    android:theme="@style/progressColor"
 />

【讨论】:

【参考方案17】:

您可以使用如下样式更改进度颜色

 <style name="AppTheme.anyName">
        <item name="colorAccent">YOUR_COLOR</item>
    </style>

并在 ProgressBar 中使用它,如下所示

<ProgressBar
            style="?android:attr/progressBarStyle"
            android:theme="@style/AppTheme.WhiteAccent"
            android:layout_
            android:layout_
            android:layout_marginBottom="@dimen/dimen_30"
        />

希望对您有所帮助。

【讨论】:

【参考方案18】:

您可以通过自定义对话框轻松完成此操作,重用其他答案中的 xml:

<?xml version="1.0" encoding="utf-8"?>

<shape
    android:innerRadiusRatio="3"
    android:shape="ring"
    android:thicknessRatio="8"
    android:useLevel="false" >

    <size
        android:
        android: />

    <gradient
        android:angle="0"
        android:endColor="@color/oceanBlue"
        android:startColor="@android:color/transparent"
        android:type="sweep"
        android:useLevel="false" />

</shape>

这样做:

public static class ModifiedProgressDialog extends ProgressDialog 
    public ModifiedProgressDialog(Context context) 
        super(context);
    

    @Override
    public void show() 
        super.show();
        setIndeterminateDrawable(getContext().getResources().getDrawable(R.drawable.blue_progress));
    

【讨论】:

【参考方案19】:

对于所有想知道如何提高自定义进度速度的人

  <?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
android:toDegrees="1080"><!--HERE YOU COULD INCREASE SPEED BY SETTING TODEGRESS(1080 is 3 loops instead of 1 in same amt of time)-->
<shape android:shape="ring" android:innerRadiusRatio="3"
    android:thicknessRatio="8" android:useLevel="false">
    <size android: android: />
    <gradient android:type="sweep" android:useLevel="false"
        android:startColor="#447a29" 
        android:endColor="#447a29"
        android:angle="0"
         />
</shape>

【讨论】:

【参考方案20】:

它从您的 Res/Values/Colors.xml -> colorAccent 中获取颜色值 如果你改变它,你的progressBar颜色也会改变。

【讨论】:

【参考方案21】:

设置android:indeterminateDrawable="@drawable/progress_custom_rotate"

使用下面的代码自定义圆环进度条

复制下面的代码并在Drawable文件夹中创建“progress_custom_rotate.xml”

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%" android:pivotY="50%" android:fromDegrees="0"
    android:toDegrees="1080">

    <shape android:shape="ring" android:innerRadiusRatio="3"
        android:thicknessRatio="8" android:useLevel="false">

        <size android: android: />

        <gradient android:type="sweep" android:useLevel="false"
            android:startColor="#4c737373" android:centerColor="#4c737373"
            android:centerY="0.50" android:endColor="#ffffd300" />

    </shape>

</rotate>

【讨论】:

【参考方案22】:
<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.MaterialComponents.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/black</item>
        <item name="colorPrimaryDark">@color/white</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>
    <style name="progressColor" parent="Widget.AppCompat.ProgressBar">
        <item name="colorControlActivated">@color/black</item>
    </style>
</resources>
<ProgressBar
            android:id="@+id/progressBar2"
            style="?android:attr/progressBarStyle"
            android:layout_
            android:layout_
            android:layout_marginStart="8dp"
            android:theme="@style/progressColor"
            app:layout_constraintBottom_toBottomOf="@+id/textView3"
            app:layout_constraintStart_toEndOf="@+id/textView3"
            app:layout_constraintTop_toTopOf="@+id/textView3" />

【讨论】:

【参考方案23】:

您可以使用以下代码更改进度条颜色:

progressBar.getProgressDrawable().setColorFilter(
    getResources().getColor(R.color.your_color), PorterDuff.Mode.SRC_IN);

【讨论】:

如果我有一个颜色数组,那么?

如何更改 SWT 进度条的颜色?

】如何更改SWT进度条的颜色?【英文标题】:HowtochangecolorofSWTprogressbar?【发布时间】:2014-06-1203:44:18【问题描述】:是否可以使用绘制侦听器更改进度条颜色?我不想要一个初始前景色和背景色,而是希望它像正常的绿色进度条... 查看详情

如何给progressbar圆形进度条设置颜色

参考技术AAndroid中ProgressBar自定义进度条的高度、颜色、圆角很多人知道怎么改颜色,可是改高度就是胡扯了,居然想通过maxHeight去改。准确方法在这里:下面这个改成了3-5个dp高度:首先是样式文件,这里定义高度:本回答被... 查看详情

如何更改进度条角度指令的颜色

】如何更改进度条角度指令的颜色【英文标题】:HowtoChangeColorofProgressBarAngularDirective【发布时间】:2015-08-2606:25:09【问题描述】:我想在我的应用程序中集成角度进度指令。我找到了解决目的的进度条指令,但我无法更改进度条... 查看详情

如何更改 QML Dial 中的圆形进度条?

】如何更改QMLDial中的圆形进度条?【英文标题】:HowchangecircularprogressbarinQMLDial?【发布时间】:2019-02-1420:53:02【问题描述】:我在QML拨号组件中更改进度条颜色时遇到问题。我尝试使用Canvas,但最后我什么也没做。有什么建议或... 查看详情

带有图像和圆形进度条的圆形按钮

】带有图像和圆形进度条的圆形按钮【英文标题】:Circularbuttonwithimageandcircularprogressbar【发布时间】:2019-12-2819:29:53【问题描述】:我正在尝试制作一个按钮,里面有一个图像,外面有一个圆形进度条,按下按钮后是彩色的。我... 查看详情

Flutter:在某个值上更改圆形进度指示器的颜色

】Flutter:在某个值上更改圆形进度指示器的颜色【英文标题】:Flutter:ChangeColorofCircularProgressIndicatoronacertainvalue【发布时间】:2021-06-0614:20:32【问题描述】:当达到某个值时,是否可以更改为CircularProgressIndicator的valueColor。例如... 查看详情

如何更改进度条的位置 - 多处理

】如何更改进度条的位置-多处理【英文标题】:Howtochangepositionofprogressbar–multiprocessing【发布时间】:2017-07-1700:20:56【问题描述】:首先,我是Python新手。与问题无关,但我不得不提一下。我正在创建一个爬虫作为我的第一个项... 查看详情

delphixeandroid更改progressbar1进度条颜色

下面是安卓学习手册中实现各种进度条的截图:要想看各种进度条的实现代码和文档,直接去360手机助手中下载安卓学习手册,例子文档随便看。1、说明  在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有... 查看详情

如何更改 Qt ProgressBar 颜色?

】如何更改QtProgressBar颜色?【英文标题】:HowtochangeQtProgressBarcolor?【发布时间】:2018-10-2410:48:20【问题描述】:我想将进度条的颜色从默认的绿色更改为红色。我有这段代码,但视图是“平面”的,我想实现如下图所示的“3d效... 查看详情

更改一个堆叠条的字体颜色

...ofonestackedbar【发布时间】:2021-11-0414:50:07【问题描述】:如何仅更改顶部堆叠条的字体颜色?【问题讨论】:如果您的问题是关于根据背景颜色更改标签颜色以增加对比度,请参阅例如Contrastbetweenlabelandbackground:determineifcolorislight... 查看详情

控制进度条的粗细

...】:我有一个进度条,如下所示:我的问题很简单,我将如何控制圆形视图的“厚度”,因为在我看来它似乎太厚了。非常感谢。【问题讨论】:使用自定义进度对话框,我的意思是你可以使用自己的图像,否则你无法控制默认... 查看详情

如何更改直方图条的颜色? [复制]

】如何更改直方图条的颜色?[复制]【英文标题】:HowdoIchangethecolorofhistogrambars?[duplicate]【发布时间】:2021-12-2501:34:52【问题描述】:我确定在某个地方有这个问题的答案,但我在任何地方都找不到。如何通过另一组数据为直方... 查看详情

qt中如何改变qprogressbar中进度条的颜色?

编程软件是Qt4.5.2吧如题,希望是自己会的,然后告诉我该怎么做,因为baidu和google上的关于QProgressBar的网页我几乎都浏览过了,没啥收获~我想要的是这样的结果:进度条的range是0~100然后当value在0~40的时候,进度条显示红色0~80的... 查看详情

如何更改圆形按钮上的边框颜色(Swift)

】如何更改圆形按钮上的边框颜色(Swift)【英文标题】:Howchangebordercoloronroundbutton(Swift)【发布时间】:2018-02-1008:14:40【问题描述】:我有四个按钮。两个按钮有圆角(1-(左上、左下)、4-(右上、右下))。如何更改图像上的边框颜... 查看详情

如何在给定的分钟内以编程方式更新圆形百分比指示器的进度颜色?

】如何在给定的分钟内以编程方式更新圆形百分比指示器的进度颜色?【英文标题】:HowtoupdatetheprogresscolorofCircularPercentIndicatorprogramaticallyforagivenperiodofminutes?【发布时间】:2021-02-0308:46:10【问题描述】:我有这个组件:GestureDetec... 查看详情

如何使用背景颜色设置圆形按钮并在按下时更改颜色

】如何使用背景颜色设置圆形按钮并在按下时更改颜色【英文标题】:Howtosetroundedbuttonswithbackgroundcolorandchangecoloronpressed【发布时间】:2014-08-1514:57:49【问题描述】:在我的android应用程序中有一个带有绿色背景的圆角矩形按钮。... 查看详情

Angular - 材质:进度条自定义颜色?

.....但毫不费力。也许有人有同样的问题?【问题讨论】:如何设 查看详情

如何在 PyQt5 Python 中更改表格小部件中滚动条的颜色

】如何在PyQt5Python中更改表格小部件中滚动条的颜色【英文标题】:HowtochangethecolorofscrollbarintablewidgetinPyQt5Python【发布时间】:2020-09-2109:25:17【问题描述】:我正在设计UI,其中我有一个tablewidget,我在其中显示一些数据。如下所... 查看详情