我在我的Android应用程序中使用水平进度条,我想改变它的进度颜色(默认为黄色)。我如何使用代码(而不是XML)做到这一点?


当前回答

这个解决方案对我很有效:

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

<ProgressBar
    android:layout_width="@dimen/d_40"
    android:layout_height="@dimen/d_40"
    android:indeterminate="true"
    android:theme="@style/Progressbar.White"/>

其他回答

相信我,最简单的解决方法就是把这个粘贴到progressBar中:

android:indeterminateTint="@android:color/white"
ProgressBar freeRamPb = findViewById(R.id.free_ram_progress_bar);

freeRamPb.getProgressDrawable().setColorFilter(
Color.BLUE, android.graphics.PorterDuff.Mode.SRC_IN);

在Xml中添加ProgressBar

适用于SDK 21及以上版本

android:indeterminateTint="@color/red"

这个答案中可能有一件事没有提到:

如果您的主题是从theme继承的。AppCompat, ProgressBar将假定你在主题中定义为“colorAccent”的颜色。

所以,使用. .

< name = " colorAccent > @color /项目custom_color < - >项目

..将自动将ProgressBar的颜色着色为@color/custom_color。

在新版本的材料设计库中,一个不确定的线性进度指示器似乎可以被制作成多种颜色。

使进度条的动画类型连续可以实现这一点。

在具有此属性的布局中: 应用:indeterminateAnimationType 或者用这个方法编程: setIndeterminateAnimationType ()

更多信息请参考这里。