2013-04-03 62 views
1

我在一個佈局中有多個SeekBars(手機上有3個,平板電腦上有8個)。 我有一個自定義的拇指和背景爲他們,所以他們顯示爲一個規模。有一個偵聽器可以檢測值何時發生更改(每個SeekBar都有一個),並且它是否將Thumb Drawable更改爲不同的顏色。這一切都工作。多個SeekBar's - 全部顯示最後一個SeekBars值

什麼不起作用,是將每個SeekBar設置爲保存的值。如果我設置第一個SeekBar,那就好了。如果我設置第二個,第一個,它們都顯示第二個SeekBar的值。這是相同的,如果我加在第三,第四,等等。下面是我使用的設置搜索欄的代碼值

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

我不知道是怎麼回事就在這裏,或者如何解決這個問題。我已經嘗試請求佈局傳遞每個SeekBars後,他們已經設置,不起作用。

最後,當我打印出每個SeekBars的值時,它實際上是正確的!這完全是一個視覺問題。也許我在文檔中遺漏了多個SeekBar(或ProgressBar)不能在一個佈局中的東西,但是我已經搜索並沒有發現任何東西。

任何幫助將不勝感激。

編輯:它會出現這個問題,只有當我在每個SeekBar上設置了進度值後更改Thumb Drawable時纔會出現此問題。我通過檢查進度來更改Thumb Drawable,如果它與原始值不同,則將Thumb Drawable設置爲另一個(不同的顏色)。

亞當

+2

我成功地做到了這一點與多個seekbars,所以它是絕對有可能的。請張貼更多的代碼。我假設錯誤接近您發佈的代碼,但請發佈您如何保存這些值以及如何直觀地設置它們。 – dberm22

+0

感謝您的回覆。我已經發布了下面的答案,這是一個簡單而瘋狂的問題。 – Mimminito

回答

0

它出現的問題是,我用的是繪製對象,正在班上緩存。因此,SeekBar顯示最後一次更新時Drawable的位置,這是最後一次SeekBar位置。

我認爲這是我在本地緩存Drawable時誤解的問題,而不是每個SeekBar使用不同的drawable。關於爲什麼會出現這種情況的更好的解釋會幫助我解決很多問題,但至少它是固定的。

+0

Drawable.mutate()將幫助你 – Alan