当我以编程方式设置SeekBar的进度时,不会触发我的onProgressChanged()事件,但是当我物理移动SeekBar滑块时,它会被完全触发。
我希望使用setProgress()时会触发该事件-Android开发者引用甚至指出:
我的项目中的一些代码 fragment :
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.my_activity);
final SeekBar mySeekBar = ((SeekBar) findViewById(R.id.mySeekBar));
mySeekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// Do some stuff
}
}
}
@Override
protected void onResume() {
super.onResume();
final SeekBar mySeekBar = ((SeekBar) findViewById(R.id.mySeekBar));
mySeekBar.setProgress(someValue); // This SHOULD trigger onProgressChanged(), but it doesn't...
}
最佳答案
+1为Romuald Brunet的答案:
这是我的“hack”来解决它:
<SeekBar android:id="@+id/seekbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:progress="1"
android:max="200" />
请注意progress =“1”,将布局中的默认进度设置为1,然后在我的代码中,当我实际将其默认设置为0时,进度发生更改,并且会触发onProgressChanged()事件。
关于Android:以编程方式设置进度时,不会触发SeekBar onProgressChanged-event,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18413310/