如何在一个方向上阻止搜索栏

时间:2017-07-12 08:46:16

标签: android swipe seekbar direction

我想知道是否可以在一个方向阻止搜索栏? (例如,一旦超过某一点,就不能向右滑动,只能向左滑动。我不想改变最大值。)

更多细节: 我有7个搜索栏和一个名为“totalProgress”的变量。 当totalProgress = X时,我想避免使用搜索栏来提升他们的进度(所以向右滑动)但我不想避免它们减少(向左滑动)。

编辑:totalProgress是我的7个搜索栏的所有进展的总和。

2 个答案:

答案 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();
    }
}