如何阻止 seekBar 移动超过动态点

How to stop the movement of seekBar past a dynamic point

我试图在某个 seekBar 到达动态点后停止其移动(通过减去 setMax() 值和其他 seekBar.getProgress() 计算得出)。 我尝试使用 onTouchEvent() 但无法停止条的移动并手动设置 seekBar.setProgress() 但它只会跳到那个点并继续用手指移动。

  sb1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            sb1.setMax(Integer.parseInt(et.getText().toString()));
            if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress())
                sb1.setProgress(progress);
            tv1.setText(String.valueOf(progress));
        }


    });

    sb2.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            sb2.setMax(Integer.parseInt(et.getText().toString()));

            if (progress >= Integer.parseInt(et.getText().toString()) - sb1.getProgress() - sb3.getProgress())
                sb2.setProgress(progress);
            tv2.setText(String.valueOf(progress));
        }

    });

请帮忙

达到所需进度后禁用搜索栏对象:

sb1.setEnable (false)

你有

if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress())
    sb1.setProgress(progress);

在您的 sb1 中更改侦听器。但这真的说不通,因为progress已经是sb1的进度了。我认为你应该改变这个:

sb1.setProgress(progress);

收件人:

sb1.setProgress(Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress());

我从你的 if 条件中获得的进步价值。基本上当进度大于该值时,您只需将其设置为该值即可。所以这样一来,它就不能被拖过那个点了。

也为您的其他听众做同样的事情。