android - 如何阻止seekBar的移动超过动态点

标签 android seekbar

我试图在某个seekBar到达动态点后停止它的移动(通过减去setMax()值和其他seekBar.getProgress()计算得出)。 我尝试使用 onTouchEvent() 但无法停止栏的移动并手动设置eekBar.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));
        }

    });

请帮忙

最佳答案

你有

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 条件。基本上,当进度大于该值时,您只需将其设置为该值即可。这样一来,它就不能被拖过该点。

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

关于android - 如何阻止seekBar的移动超过动态点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551267/

相关文章:

java - 聊天 fragment 不更新 recyclerview

java - 当 SeekBar 传递值时更改 TextView 颜色

android - 在 API 版本 16 之前检测 SeekBar 中的拇指位置

android - 如何在 Kotlin 中转换时间戳

android - 为什么 onCreate Bundle 和 onSaveInstanceState Bundle 在 Fragment 中不同?

android - 从android中的 View 中删除监听器

android - 如何以编程方式检测 Mi 设备中的全屏手势模式

android - 多个 SeekBars 监听器

android - Android 上的搜索栏计时

安卓 : Animate an animated vector drawable with a seek bar