我有一个附带OnSeekBarChangeListener实例的SeekBar。每次用户更改该值时,都会触发onProgressChanged()方法。没关系。
但后来我试图像这样更新SeekBar的进度:
seekBar.setProgress(value);
我希望不会发生任何事件 - 只是SeekBar的进展会发生变化。但是在这种情况下也会调用onProgressChanged()。
如何在不触发事件的情况下更改SeekBar的进度?
答案 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);