如何在Android上更改默认的ProgressBar圆圈颜色

人生处万类,知识最为贤。这篇文章主要讲述如何在Android上更改默认的ProgressBar圆圈颜色相关的知识,希望能为你提供帮助。
我目前在通过gradle导入的android项目中使用外部库。 此库显示带有ProgressBar圈的通知栏。这是我在其中找到的代码:

< ProgressBar android:id="@+id/progress_bar" android:layout_height="match_parent" android:layout_marginBottom="4dp" android:layout_marginTop="4dp" style="@style/SuperActivityToast_Progress_ProgressBar"/>

【如何在Android上更改默认的ProgressBar圆圈颜色】相关的风格是这样的:
< style name="SuperActivityToast_Progress_ProgressBar" parent="android:Widget.Holo.ProgressBar"> < item name="android:layout_width"> 32dp< /item> < item name="android:layout_marginLeft"> 8dp< /item> < /style>

如果我理解正确,所示圆圈的颜色来自默认的颜色(手机上的绿色)。我需要改变它!
现在,我无法修改源代码,库本身也不能让我以编程方式设置样式。
有一种方法可以在应用级别更改默认样式或更好地覆盖此特定样式?
谢谢戴维德
答案如果您使用的是AppCompat主题,则使用accentColor对圆圈进行着色。
如果您想将其着色为与主题不同的颜色,则应考虑使用ThemeOverylay。例如。如果你想制作圆形色调red你可以做以下事情:
在你的styles.xml
< style name="RedAccent" parent="ThemeOverlay.AppCompat.Light"> < item name="colorAccent"> #F00< /item> < /style>

在你的ProgressBar,将主题设置为RedAccent
< ProgressBar android:id="@+id/progress_bar" android:layout_width="32dp" android:layout_height="32dp" android:theme="@style/RedAccent"/>

而你的圈子现在将呈红色!
另一答案经过多次尝试,我找到了解决方案:
ProgressBar progBar = (ProgressBar) context.getActivity().findViewById(R.id.progress_bar); if (progBar != null) { progBar.setVisibility(View.VISIBLE); progBar.setIndeterminate(true); progBar.getIndeterminateDrawable().setColorFilter(0xFFFFFFFF, android.graphics.PorterDuff.Mode.MULTIPLY); }

简单地说,我将获得库创建的进度条对象的引用,并更改它的属性。 (在我的活动中,我必须在“OnStart”方法中执行此操作,否则它为null)最重要的部分是执行魔术的“setColorFilter”。
另一答案对于将来的参考,这个改变对我有用:
在values / styles.xml文件中更改colorControlActivated中的AppTheme
< style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> < !-- Main theme colors --> .... < !-- Color for circle in progress bar --> < item name="colorControlActivated"> #DC0808< /item> < /style>

使用此方法,您无需在xml文件中对< ProgressBar/> 标记执行任何操作。

    推荐阅读