当我以编程方式设置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/

10-11 22:41
查看更多