在Android中,要实现ProgressBar的分段显示,可以通过设置android:indeterminate
属性为false
,并添加自定义的进度条样式。以下是实现分段显示的步骤:
res/drawable
目录下创建一个新的XML文件,例如progress_drawable.xml
,并添加以下内容:<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/secondaryProgress">
<clip>
<shape>
<corners android:radius="4dp" />
<gradient
android:startColor="#80FF80"
android:centerColor="#80FF80"
android:centerY="0.75"
android:endColor="#80FF80"
android:angle="270" />
</shape>
</clip>
</item>
<item android:id="@android:id/progress">
<clip>
<shape>
<corners android:radius="4dp" />
<gradient
android:startColor="#FF0000"
android:centerColor="#FF0000"
android:centerY="0.75"
android:endColor="#FF0000"
android:angle="270" />
</shape>
</clip>
</item>
</layer-list>
这个文件定义了一个带有两个进度条的渐变背景,一个是主要进度条(红色),另一个是次要进度条(绿色)。
android:indeterminate
属性设置为false
,同时将android:progressDrawable
属性设置为我们刚刚创建的progress_drawable.xml
文件:<ProgressBar
android:id="@+id/progressBar"
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:indeterminate="false"
android:max="100"
android:progress="50"
android:progressDrawable="@drawable/progress_drawable" />
// 获取ProgressBar实例
ProgressBar progressBar = findViewById(R.id.progressBar);
// 设置主要进度条的值
int primaryProgress = 75;
progressBar.setProgress(primaryProgress);
// 设置次要进度条的值
int secondaryProgress = 25;
progressBar.setSecondaryProgress(secondaryProgress);
这样,你就可以实现一个具有分段显示效果的ProgressBar。