获取SeekBar触摸位置(无进度变化)

Get SeekBar touch position (without progress change)

我有一个简单的离散 SeekBar 表示从 0 到 10 的级数。

SeekBar 的进度以编程方式定义,因此我禁用了触摸事件以防止用户更改其当前位置:

mSeekBar.setOnTouchListener(new View.OnTouchListener()
    {
        @Override
        public boolean onTouch(View v, MotionEvent event)
        {
            return true;
        }
    });

但是,我需要获取用户在 SeekBar 上触摸的位置(无论其当前进度如何)。

基本上,如果用户触摸第一个 "dot",他会去一个 activity,如果他触摸第二个,他会去另一个,等等......但是 none这些操作应该改变 SeekBar.

的当前状态

我怎样才能做到这一点?

我没有找到任何方法来实现我想要的,所以我不得不找到一个小的解决方法。

我刚刚在另一个上面添加了第二个不可见的 SeekBar,仅用于使用 onSeekBarChangedListener 处理触摸事件。

为了让它透明,我使用了:

android:progressDrawable="@android:color/transparent"

另一个SeekBar和之前一样使用,只是显示进度信息。这样我就必须分开行为。

要获取您在搜索栏中触摸的位置,请使用

int a=seekbar.getProgress()。 enter image description here

 setTemperature.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

            int a= seekbar.getProgress()

        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {

        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {

        }
    });

我不是这样做的:

  seekBar.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            float x = event.getX();
            float y = event.getY();

            return false;
        }
    });

希望对您有所帮助