Android SeekBar set progress value

断了今生、忘了曾经 提交于 2019-11-28 00:42:40

Perhaps you should try to use a handler? I use this in an app of mine and works fine.

1) When creating your SeekBar:

// ...
seekBarHandler = new Handler(); // must be created in the same thread that created the SeekBar
seekBar = (SeekBar) findViewById(R.id.my_seekbar);
// you should define max in xml, but if you need to do this by code, you must set max as 0 and then your desired value. this is because a bug in SeekBar (issue 12945) (don't really checked if it was corrected)
seekBar.setMax(0);
seekBar.setMax(max);
seekBar.setProgress(progress);
// ...

2) When your button is clicked

// ...
seekBarHandler.post(new Runnable() {
    @Override
    public void run() {
        if (seekBar != null) {
            seekBar.setMax(0);
            seekBar.setMax(max);
            seekBar.setProgress(newProgress);
        }
    }
});
// ...

You can also use :

mSeekBar.refreshDrawableState();

after you set progress .

Try this :

seekBar.setMax(50);
seekBar.setProgress(22);

instead of :

seekBar.setProgress(22); seekBar.setMax(50);

Only if you set the Max Value first, can the SeekBar get an idea of how much progress is actually made, when you set the progressValue.

This actually made a difference for me when I wanted a default value for my Progress Bar

similuke

You need to call setOnSeekbarChangeListener() on your seekbar object and let for example your activity implement OnSeekbarChangeListener() and in that function you can do whatever you want.

The solution that works for me:

mSeekbaBar.setProgress(progress);
mSeekbaBar.post(new Runnable() {
            @Override
            public void run() {
                mSeekbaBar.setProgress(progress);
            }
        });

It removes the blinking of the thumb

As of support library 28.0.0 anyway, I can set the progress simply like this

mySeekBar.setProgress(17);

and the position gets updated without a problem.

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!