Андроид, как заблокировать перетаскивание/отключить его на короткое время
Я хочу заблокировать перетаскивание кнопки поиска, если значение истинно. Возможно ли это? Я использую поисковую панель в качестве переключателя. Если мое значение для поисковой строки равно 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) {
}
};