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

Андроид, как заблокировать перетаскивание/отключить его на короткое время

Я хочу заблокировать перетаскивание кнопки поиска, если значение истинно. Возможно ли это? Я использую поисковую панель в качестве переключателя. Если мое значение для поисковой строки равно 0, и я нажимаю кнопку "Действие А". Если мое значение для поиска составляет 1, и я нажимаю кнопку, действие B запускается.
Я хочу предотвратить это. Если действие A или B запущено, панель поиска перетаскивается в другую позицию.

Как я могу достичь этого?

4b9b3361

Ответ 1

Вы должны установить свой собственный onTouchListener и просто вернуть true.

seekBar.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                return true;
            }
        });

Ответ 3

Задайте одну переменную уровня класса

private boolean blockSeekBar = false;

после этого установите переменную blockSeekBar в соответствии с вашим требованием и используйте в приложении.

seekBar.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            return blockSeekbar;
        }
    });

setEnabled (true/false) также выбор, но вид не отображается хорошо, поэтому код выше кода отлично работает.

Ответ 4

int lastProgress=0;
  1. Следите за последним прогрессом, когда Seekbar.OnSeekbarChangeListener запущен.

    private SeekBar.OnSeekBarChangeListener mOnSeekbarChangeListener = new 
    
    SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
        if (fromUser) {
            if (true) {
                seekbar.setProgress(lastProgress);
            } else {
                seekbar.setProgress(progress);
            }
        }
    }
    
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        lastProgress = seekBar.getProgress();
    }
    
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    
    }
    };