2014-01-22 35 views
4

我有一個SeekBar的OnSeekBarChangeListener實例附加。每次用戶更改該值時,都會觸發onProgressChanged()方法。沒關係。如何更新SeekBar不觸發OnSeekBarChangeListener?

但後來我試圖更新這樣的搜索欄的進度:

seekBar.setProgress(value);

我希望沒有事件將觸發 - 只是搜索欄的進展情況將發生變化。但onProgressChanged()在這種情況下也被調用。

如何在不觸發事件的情況下更改SeekBar的進度?

回答

13
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {} 

看看參數之前,以避免這一點,你可以空出來的聽衆。你有一個來自用戶的布爾值,使用它。

if (fromUser) { 
......... 
......... 
} 

這樣做的代碼將僅在用戶啓動更改時執行。 如果您從代碼中設置seekbar的值,則事件將觸發,但由於if()語句,代碼將不會執行。 再見。 -Marco-

0

您正在更改SeekBar的進度。當然會調用onProgressChanged

如果您想設置你的價值

seekBar.setOnSeekBarChangeListener(null); 
seekBar.setProgress(value); 
seekBar.setOnSeekBarChangeListener(this); 
+0

我認爲事件只有在用戶與小部件交互並更改它們的值而不是CODE時觸發。你已經清除了,謝謝。 – dmitru