如何更新SeekBar不触发OnSeekBarChangeListener?

时间:2014-01-22 22:17:28

标签: android events android-widget seekbar

我有一个附带OnSeekBarChangeListener实例的SeekBar。每次用户更改该值时,都会触发onProgressChanged()方法。没关系。

但后来我试图像这样更新SeekBar的进度:

seekBar.setProgress(value);

我希望不会发生任何事件 - 只是SeekBar的进展会发生变化。但是在这种情况下也会调用onProgressChanged()。

如何在不触发事件的情况下更改SeekBar的进度?

2 个答案:

答案 0 :(得分:15)

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

查看参数。你有一个来自用户的布尔值,使用它。

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

这样做只有在用户启动更改时才会执行代码。 如果从代码设置seekbar的值,事件将触发,但由于if()语句,代码将不会执行。 再见。 -Marco -

答案 1 :(得分:0)

您正在更改SeekBar的进度。当然会调用onProgressChanged

如果您想避免这种情况,可以在设置值之前将侦听器置空

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