如果值为true,我想阻止拖动搜索栏。这甚至可能吗?我使用搜索栏作为开关。如果我的搜索栏值为0,则按下按钮操作A开始。如果我的搜索栏值为1并且按下按钮,则启动操作B.
我想防止如果操作A或B正在运行,则搜索栏被拖动到另一个位置。
我怎样才能做到这一点?
答案 0 :(得分:61)
您应该设置自己的onTouchListener并返回true。
seekBar.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return true;
}
});
答案 1 :(得分:6)
您是否尝试过禁用该视图?
价: http://developer.android.com/reference/android/view/View.html#setEnabled(boolean)
<强>更新强>
https://stackoverflow.com/a/3278616/529691
理想情况下你不应该这样做,因为这会让用户感到困惑。我的建议是重新思考你的方法。
答案 2 :(得分:1)
设置一个班级变量
private boolean blockSeekBar = false;
根据您的要求设置blockSeekBar
变量并在app。
seekBar.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return blockSeekbar;
}
});
setEnabled(true/false)也可以选择,但是视图效果不佳,这就是为什么上面的代码完全正常工作。
答案 3 :(得分:0)
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) {
}
};