我有以下方法将视图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自定义进度。 我必须改变它吗?
答案 0 :(得分:0)
如果将drawable用于progressBar的“背景”。这是个问题。
所有progressBars具有与背景(或进度状态)相同的可绘制对象。将进度状态设置为其中之一时,它会更改可绘制状态,并应用于所有进度条。
这是一个“常见”问题。
我已经在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);