如何停止seekBar通过动态点的移动

Pro*_*Bul 2 android seekbar

我试图在某个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));
        }

    });
Run Code Online (Sandbox Code Playgroud)

请帮忙

Mic*_*ski 5

你有

if (progress >= Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress())
    sb1.setProgress(progress);
Run Code Online (Sandbox Code Playgroud)

在您的sb1变更监听器中。但这并没有真正的意义,因为progress已经有了的进步sb1。我认为您应该更改此:

sb1.setProgress(progress);
Run Code Online (Sandbox Code Playgroud)

至:

sb1.setProgress(Integer.parseInt(et.getText().toString()) - sb2.getProgress() - sb3.getProgress());
Run Code Online (Sandbox Code Playgroud)

我为这一进展所获得的价值来自于您的if状况。基本上,当进度大于该值时,只需将其设置为该值即可。因此,这种方式不能将其拖到该点之外。

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