Android ProgressBar 颜色

引言

Android ProgressBar 是一种用于显示操作进度的控件,常用于展示长时间操作的进度。ProgressBar 具有可自定义的外观和颜色,本文将介绍如何在 Android 应用中自定义 ProgressBar 的颜色。

ProgressBar 控件简介

ProgressBar 是 Android Framework 中的一个重要控件,用于显示操作的进度。它通常以水平或垂直的方式进行展示,可以显示一个滚动条、一个圆形进度条或者一个环形进度条。

ProgressBar 控件常用于展示后台任务的进度,例如文件下载、网络请求等操作。它可以通过设置最大值和当前值来控制显示的进度,同时还可以设置不同的样式和颜色。

ProgressBar 颜色设置方法

ProgressBar 的颜色设置可以通过修改 ProgressBar 的样式实现,在 Android 中样式是由 XML 文件定义的。下面将介绍两种常用的设置 ProgressBar 颜色的方法。

方法一:使用样式属性

可以通过在 ProgressBar 的样式中设置颜色属性来修改 ProgressBar 的颜色。

首先,在 res/values 文件夹中创建一个名为 "colors.xml" 的 XML 文件,并定义需要用到的颜色资源。例如,可以在 "colors.xml" 中定义一个名为 "progressColor" 的颜色资源:

<resources>
    <color name="progressColor">#FF4081</color>
</resources>

接下来,在 res/values/styles.xml 文件中定义 ProgressBar 的样式,并将颜色属性设置为 "progressColor":

<style name="CustomProgressBar" parent="android:Widget.ProgressBar.Horizontal">
    <item name="android:progressDrawable">@drawable/progress_drawable</item>
    <item name="android:indeterminateDrawable">@drawable/indeterminate_drawable</item>
    <item name="android:minHeight">10dp</item>
    <item name="android:maxHeight">10dp</item>
    <item name="android:progressTint">@color/progressColor</item>
    <item name="android:indeterminateTint">@color/progressColor</item>
</style>

在以上样式中,我们通过设置 "android:progressTint" 和 "android:indeterminateTint" 属性将 ProgressBar 的进度条和不确定进度的颜色都修改为 "progressColor"。

最后,在布局文件中使用自定义样式来设置 ProgressBar 的颜色。例如,可以在一个 LinearLayout 中添加一个自定义样式的 ProgressBar:

<LinearLayout
    ...
    xmlns:app="

    ...

    <ProgressBar
        style="@style/CustomProgressBar"
        ...
        />

    ...

</LinearLayout>

通过以上的设置,ProgressBar 的颜色将会被修改为 "progressColor"。

方法二:使用 Drawable

另一种设置 ProgressBar 颜色的方法是使用 Drawable。可以自定义一个 Drawable,并设置其颜色属性为所需的颜色。

首先,在 res/drawable 文件夹中创建一个名为 "progress_drawable.xml" 的 XML 文件,并定义一个带有颜色属性的 LayerDrawable,用来表示 ProgressBar 的进度条:

<layer-list xmlns:android="
    <item
        android:id="@android:id/background"
        android:drawable="@drawable/background_drawable" />

    <item
        android:id="@android:id/progress"
        android:drawable="@drawable/progress_drawable_shape" />
</layer-list>

其中,"background_drawable" 为背景样式,"progress_drawable_shape" 为进度条样式。

接下来,在 res/drawable 文件夹中创建一个名为 "background_drawable.xml" 的 XML 文件,并定义一个 ShapeDrawable,用来表示 ProgressBar 的背景样式:

<shape xmlns:android="
    <solid android:color="#CCCCCC" />
    <corners android:radius="5dp" />
</shape>

在以上的示例中,我们将背景颜色设置为灰色。

再接下来,在 res/drawable 文件夹中创建一个名为 "progress_drawable_shape.xml" 的 XML 文件,并定义一个 ShapeDrawable,用来表示 ProgressBar 的进度条样式:

<shape xmlns:android="
    <solid android:color="@color/progressColor" />
    <corners android:radius="5dp" />
</shape>

在以上的示例中,我们将进度条的颜色设置为 "progressColor"。