Android seekbar如何在短时间内阻止/禁用它

Android seekbar如何在短时间内阻止/禁用它,android,user-interface,seekbar,Android,User Interface,Seekbar,如果值为true,我想阻止seekbar的拖动。这可能吗?我用一个搜索杆作为开关。如果我的seekbar值为0,我按下按钮,动作A开始。如果我的seekbar值为1,并且我按下按钮,则启动操作B 我想防止,如果操作A或B正在运行,seekbar会被拖到另一个位置我如何才能做到这一点?您是否尝试过禁用视图 参考: 更新: 理想情况下,您不应该这样做,因为这会让用户感到困惑。我的建议是重新考虑您的方法。您应该设置自己的onTouchListener,然后返回true seekBar.setOnT

如果值为true,我想阻止seekbar的拖动。这可能吗?我用一个搜索杆作为开关。如果我的seekbar值为0,我按下按钮,动作A开始。如果我的seekbar值为1,并且我按下按钮,则启动操作B

我想防止,如果操作A或B正在运行,seekbar会被拖到另一个位置

我如何才能做到这一点?

您是否尝试过禁用视图

参考:

更新:


理想情况下,您不应该这样做,因为这会让用户感到困惑。我的建议是重新考虑您的方法。

您应该设置自己的onTouchListener,然后返回true

seekBar.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                return true;
            }
        });

设置一个类级别变量

private boolean blockSeekBar = false;
之后,根据您的要求设置
blockSeekBar
变量并在应用程序中使用

seekBar.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            return blockSeekbar;
        }
    });
还有一个选择,但视图显示不好,所以这就是为什么上面的代码可以完美工作的原因

int lastProgress=0;
  • 跟踪触发Seekbar.onseekbarchaneglistener时的最后进度

    private SeekBar.OnSeekBarChangeListener mOnSeekbarChangeListener = new 
    
    SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekbar, int progress, boolean fromUser) {
        if (fromUser) {
            if (true) {
                seekbar.setProgress(lastProgress);
            } else {
                seekbar.setProgress(progress);
            }
        }
    }
    
    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {
        lastProgress = seekBar.getProgress();
    }
    
    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {
    
    }
    };
    

  • 这意味着风景消失了,这不是我想要的。错了。它不会删除视图,而是禁止用户与视图交互。阅读你的文档。啊,好的。我们将测试它。谢谢seekbar.setEnabled(true)或seekbar.setEnabled(false)不起作用。它不会阻止seekbar移动。mhh。好啊谢谢我想如果seekbar被切换,我会简单地停止这个动作。setEnabled(false)实际上会使seekbar整体模糊。如果我们只想禁用touch,这是一个完美的解决方法。如果您想在阻塞和取消阻塞seekbar之间切换,只需在onTouchListener中添加一个全局布尔变量,例如:`If(globalbooleanvar){return true}else{return false}`对meI不理解。为什么
    setEnabled()
    不是一个好选项?对我来说,它工作得很好。当你设置setEnabled(真/假)时,视图会显示一些模糊,这意味着它不能直接显示,不能单击启用,这不是OP要求的。