1

我在一个布局中有多个 SeekBar(手机上有 3 个,平板电脑上有 8 个)。我有一个自定义的拇指和背景,所以它们显示为一个比例。有一个侦听器可以检测值何时更改(每个 SeekBars 一个),以及是否有 Thumb Drawable 更改为不同的颜色。这一切都在工作。

什么不起作用,将每个 SeekBar 设置为保存的值。如果我设置了第一个 SeekBar,那就没问题了。如果我设置第二个和第一个,它们都显示第二个 SeekBar 的值。如果我添加第三个、第四个等,这也是一样的。下面是我用来设置 SeekBar 值的代码

mSeekBarOne.setProgress(mSavedValues.value1);
mSeekBarTwo.setProgress(mSavedValues.value2);
mSeekBarThree.setProgress(mSavedValues.value3);

我不知道这里发生了什么,或者如何解决这个问题。我尝试在每个 SeekBar 设置后请求布局传递,但不起作用。

最后,当我打印出每个 SeekBar 的值时,它实际上是正确的!这纯粹是一个视觉问题。也许我错过了文档中的一些内容,即多个 SeekBar(或 ProgressBar)不能在一个布局中,但我已经搜索并没有发现任何内容。

任何帮助将不胜感激。

编辑:只有在我在每个 SeekBar 上设置进度值后更改 Thumb Drawable 时才会出现此问题。我通过检查进度来更改 Thumb Drawable,如果它与原始值不同,则将 Thumb Drawable 设置为另一个(不同的颜色)。

亚当

4

1 回答 1

0

看来问题是我使用的 Drawable 被缓存在类中。正因为如此,SeekBar 显示的是 Drawable 最后一次更新的位置,也就是最后一个 SeekBar 位置。

我认为这是我在本地缓存 Drawable 时误解的错误,而不是每个 SeekBar 使用不同的 drawable。关于为什么会这样的更好解释会帮助我很多,但至少它是固定的。

于 2013-04-03T11:44:46.500 回答