使用当前的ProgressBar API 实际上很容易获得。
根据所需的任务数量和完成的任务数量,您可以使用setMax 和setProgress 更新ProgressBar
progressBar.setMax(totalTasks);
progressBar.setProgress(tasksDone);
这将覆盖进度条中的一小部分tasksDone / totalTasks。
编辑:根据 cmets 中突出显示的场景,您可以简单地在 LinearLayout 中使用多个视图。
您可以使用带有所需分区颜色背景的 LinearLayout。
<LinearLayout
....
android:orientation="horizontal"
android:background="@color/partition"
....
/>
然后简单地以编程方式添加具有相等权重(和水平边距)的子视图:-
for(task in tasks) {
val progressBar = View(this)
progressBar.marginEnd = gapRequired
// customize your view here: Set background, shape etc.
// Set the width to 0 and weight to 1f
val params = LinearLayout.LayoutParams(0, height, 1f)
linearLayout.addView(view, index, params)
}
稍后修改单个视图(进度条的片段):-
val view = linearLayout.getChildAt(index)
// Modify the view as needed
从布局中删除视图:-
linearLayout.removeViewAt(index)
或者,如果您引用了视图:-
linearLayout.removeView(view)
您还可以使用linearLayout.removeAllViews()删除所有视图(如果您出于某种原因需要重置整个进度条)
如果您希望progressBar 中有很多此类片段,您可能希望将RecyclerView 与适配器一起使用。