多个进度条进度值不正确的android

时间:2015-06-23 20:50:24

标签: android android-progressbar

我有一个带有多个进度条的视图。当我切换到最后一个标签(标签4)并且我回来时,单个进度条不会保持它们的值。[基本上当主标签不可见并再次显示时]。< / p>

进度条放在Fragment内部的LinearLayout内。看起来像Youtube应用程序。在主页上,我有5个进度条。 我第一次设置进度时,所有进度条值看起来都很完美。 个别进度条显示各自的值。

然而,当我切换到标签4(不在图片中)时,我回来了,所有进度条的值都设置为最后一个进度条的值。见下图。

Multiple Progress bar screen

我通过使用TextBox删除进度条进行检查,该值按照设置保持不变。 我已将最大值添加到进度条,使用方法1. setProgress,2。incrementProgressBy,没有改进。

由于文本框行为正常,我无法弄清楚我的问题是否有帮助。

PS:在android Fragment(tab)中,当它不可见时被重新创建并带来可见性。为了避免这种情况,我在onCreateview中限制了它,以保留最后创建的rootview。

3 个答案:

答案 0 :(得分:2)

你现在可能已经解决了这个问题,但是如果有其他人在同一个问题上访问此页面:我遇到了同样的问题,标签容器视图(ViewPager)中的片段中存在多个进度条,并且所有这些都显示了切换选项卡后的相同进度值(最后一组)。我通过在片段的onResume而不是onCreateView中设置进度值来解决它。

答案 1 :(得分:1)

我在ViewPager中遇到了2个progressBars的相同问题,并通过为每个progressBar使用唯一的drawable实例进行修复:

这会在progressBar上显示错误的值:

val progressDrawable = ContextCompat.getDrawable(it, R.drawable.progress_bar_colors)

mBinding.firstProgressBar.progressDrawable = progressDrawable
mBinding.secondProgressBar.progressDrawable = progressDrawable

这解决了这个问题:

mBinding.firstProgressBar.progressDrawable = ContextCompat.getDrawable(it, R.drawable.progress_bar_colors)
mBinding.secondProgressBar.progressDrawable = ContextCompat.getDrawable(it, R.drawable.progress_bar_colors)

我希望它可以帮到你

答案 2 :(得分:-1)

有一个可接受的答案,但是我遇到了同样的问题,在不同的片段和回收者视图中有多个进度条。我的问题与观察到的Android进度栏错误有关,该错误并不总是更新进度条(请参见此处的已接受答案:android progressBar does not update progress view/drawable

就我而言,我有一个自定义的进度栏,并添加了这些方法来解决此错误。作为开发人员,我们不得不经常解决这一难题。

  fun setProgressSafely(progress: Int) {
    setProgress(progress + 1)
    setProgress(progress)
}

fun setMaxSafely(max: Int) {
    setMax(max + 1)
    setMax(max)
}