如何在Android中获取虚线水平进度条?

3

我需要设计一个如附件所示的虚线进度条。

enter image description here

目前我已经完成了一般进度条的设计,其中有两种不同的颜色,一种用于显示进度,另一种用于其他部分。

<ProgressBar
    android:id="@+id/progress_bar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="3dp"
    android:progressDrawable="@drawable/bg_progress_bar_green"
    />

这里是bg_progress_bar_green

 <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape>
        <solid android:color="#E0E1EA" />
    </shape>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape>
            <solid android:color="#66BA6B" />
        </shape>
    </clip>
</item>

这是我更新进度条的方法:

 progressBar.setProgress(numOfHours);

如何获得如图所示的条形图虚线?
1个回答

3

您可以在您的工作中使用这个库 Step Progress Bar。如果链接发生变化,我会提供代码。

Gradle

dependencies {
   ...
   compile 'com.marcok.stepprogressbar:stepprogressbar:1.0.1'
}

使用方法

 <com.marcok.stepprogressbar.StepProgressBar
    android:layout_centerVertical="true"
    android:layout_height="0dp"
    android:layout_width="wrap_content"
    android:id="@+id/stepProgressBar"
    app:cumulativeDots="false"
    app:activeDotIndex="0"
    app:activeDotColor="@color/material_deep_teal_500"
    app:inactiveDotColor="@color/material_blue_grey_800"
    app:activeDotIcon="@drawable/active_dot.png"
    app:inactiveDotIcon="@drawable/inactive_dot.png"
    app:numberDots="6"
    app:dotSize="20dp"
    app:spacing="20dp"/>
  • 如果提供了点标记,则它们会覆盖点的颜色
  • 布局高度无关紧要,由点的大小确定

Java代码

  • 要移动到下一个点或上一个点:

    StepProgressBar mStepProgressBar =(StepProgressBar)findViewById(R.id.stepProgressBar); mStepProgressBar.next(); mStepProgressBar.previous();

    • 要将点设置为累积(所有在指定索引处的点都将显示为活动状态),请调用setCumulativeDots(true)

    • 调用setCurrentProgressDot(-1)将防止任何点显示为活动状态。任何更低的值都会抛出IndexOutOfBoundsExeption

    • 其他方法:

    setCurrentProgressDot(); setNumDots(); setActiveColor(); setInactiveColor(); setActiveDrawable(); setInactiveDrawable();

矩形进度图案

使用这两个图案...

inactive_dot.png inactive_dot.png

active_dot.png active_dot.png


我需要将已经进展的矩形显示为绿色,而其余所有矩形则应为灰色。如何使用该库使多个点 / 矩形处于活动状态? - Santhosh
@SANTHOSH 我已经更换了整个库.. 这是一个完美适合你工作的新库。 - Abhishek Singh
@AbhishekSingh 你好!能否请分享一下你的库? - D7ILeucoH
@D7ILeucoH 上面的代码对你来说会起作用。之前我发布了不同的答案,然后改成了这个答案。这个答案将完美地解决问题。 - Abhishek Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接