我有以下方法,将视图Views
添加到LinearLayout
,并为每个视图在ProgressBar
上设置进度:
private void showProgress(LinearLayout recentLayout) {
recentLayout.removeAllViews();
for (MyItem mItem : items) {
final View view = LayoutInflater.from(getContext()).inflate(R.layout.listview_content, recentLayout, false);
final ProgressBar progressBar = view.findViewById(R.id.listview_content_progress);
// [...] simplifying a lot
// mItem.getProgress().progess --> float between 0 and 1
progressBar.setProgress((int) (mItem.getProgress().progess * 100));
recentLayout.addView(view);
}
}
但是,执行此代码后,布局中的每个进度栏都将设置相同的进度(详细来说,最后一个元素的进度)。
我想念什么?对我来说,似乎每个进度条的进度都是单独设置的,而不是一次设置。
编辑
我不知道这是否可能是因为我使用了通过xml绘制的自定义进度。
我需要手动对其进行变异吗?
最佳答案
如果将drawable用于progressBar的“背景”。这是一个问题。
所有progressBar的可绘制对象与背景(或进度状态)相同。当您将进度状态设置为其中之一时,它将更改可绘制状态,并将其应用于所有进度条。
这是一个“常见”问题。
我已经在Horocope应用程序中遇到过它。只有3个进度条,所以我以不好的方式完成了:D
progressBar.setProgressDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.love_progressbar));
progressBar2.setProgressDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.job_progressbar));
progressBar3.setProgressDrawable(ContextCompat.getDrawable(getActivity(),R.drawable.health_progressbar));
progressBar.setProgress(love);
progressBar2.setProgress(job);
progressBar3.setProgress(health);