Подтвердить что ты не робот

Android SeekBar задает значение прогресса

Я хочу, чтобы прогресс поисковой системы менялся всякий раз, когда я нажимаю кнопку. Использование setProgress() работает только для начального значения, оно выдает ошибку, если я использую после некоторых изменений.

4b9b3361

Ответ 1

Возможно, вам стоит попытаться использовать обработчик? Я использую это в своем приложении и прекрасно работаю.

1) При создании вашего 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) Когда ваша кнопка нажата

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

Ответ 2

Вы также можете использовать:

mSeekBar.refreshDrawableState();

после того, как вы установите прогресс.

Ответ 3

Вам нужно вызвать setOnSeekbarChangeListener() на свой объект поиска и, например, реализовать ваш инструмент реализации OnSeekbarChangeListener(), и в этой функции вы можете делать все, что хотите.

Ответ 4

Решение, которое работает для меня:

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

Удаляет мигание большого пальца