Я хочу заблокировать перетаскивание кнопки поиска, если значение истинно. Возможно ли это? Я использую поисковую панель в качестве переключателя. Если мое значение для поисковой строки равно 0, и я нажимаю кнопку "Действие А". Если мое значение для поиска составляет 1, и я нажимаю кнопку, действие B запускается.
Я хочу предотвратить это. Если действие A или B запущено, панель поиска перетаскивается в другую позицию.
Как я могу достичь этого?
Андроид, как заблокировать перетаскивание/отключить его на короткое время
Ответ 1
Вы должны установить свой собственный onTouchListener и просто вернуть true.
seekBar.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return true;
}
});
Ответ 2
Вы пытались отключить представление?
Ref: http://developer.android.com/reference/android/view/View.html#setEnabled(boolean)
Update:
fooobar.com/questions/768652/...
В идеале вы не должны этого делать, так как это путает пользователя. Мое предложение переосмыслило ваш подход.
Ответ 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;
-
Следите за последним прогрессом, когда 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) { } };