我想知道是否可以在一个方向阻止搜索栏? (例如,一旦超过某一点,就不能向右滑动,只能向左滑动。我不想改变最大值。)
更多细节: 我有7个搜索栏和一个名为“totalProgress”的变量。 当totalProgress = X时,我想避免使用搜索栏来提升他们的进度(所以向右滑动)但我不想避免它们减少(向左滑动)。
编辑:totalProgress是我的7个搜索栏的所有进展的总和。
答案 0 :(得分:0)
试试这个:
yourSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
int lastprogress = 0;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
if(progress<lastprogress){
sb.setProgress(lastprogress);
}else{
lastprogress = progress;
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
答案 1 :(得分:0)
// mTotalProgress - outer variable with current total progress
// mMaxProgress - outer variable with allowable total progress
mSeekBar.setOnSeekBarChangeListener(new MySeekBarListener());
public class MySeekBarListener implements SeekBar.OnSeekBarChangeListener {
private int mOthersProgress;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
int totalProgress = mOthersProgress + progress;
if (totalProgress > mMaxProgress) {
int allowable = progress - (totalProgress - mMaxProgress);
seekBar.setProgress(allowable);
}
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
mOthersProgress = mTotalProgress - seekBar.getProgress();
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
mTotalProgress = mOthersProgress + seekBar.getProgress();
}
}