如何在SeekBar的拇指正上方找到Y位置?

我目前正在尝试使一个浮动文本出现在SeekBar上方,并已解决在SeekBar的大拇指上方找到确切的X位置,如下所示:

double percent = seekBar.getProgress() / (double) seekBar.getMax();
        int offset = seekBar.getThumbOffset();
        int seekWidth = seekBar.getWidth();
        int val = (int) Math.round(percent * (seekWidth - 2 * offset));
        int labelWidth = seekBarText.getWidth();
        float textX = offset + seekBar.getX() + val
                - Math.round(percent * offset)
                - Math.round(percent * labelWidth / 2);

现在我无法在SeekBar的大拇指上找到确切的Y位置。 我目前正在尝试执行以下操作:

textY = seekBar.getY() - seekBar.getThumbOffset();
seekBarTextView.setX(textX);
seekBarTextView.setY(textY);

但是,这会导致SeekBar位于拇指上方几百像素处,如截图所示(SeekBar是绿色的,TextView被设置在数字“10”的右上角):

在这里输入图像描述

更新:

我最终以一种冒险的方式解决了这个问题。 我利用以下方法检索SeekBar上方的Y值:

 int [] xyArray = new int[2];
        seekBar.getLocationOnScreen(xyArray);
        float textY = xyArray[1] - DPtoPixel((int) 118.75);

getLocationOnscreen()返回一个不正确的X值,由于某种原因,它在所有屏幕尺寸上精确地偏移了118.75dp(我不知道为什么)。 我简单地从给定的Y值中减去了该值,并找到了正确的位置。


更新:

我最终以一种冒险的方式解决了这个问题。 我利用以下方法检索SeekBar上方的Y值:

 int [] xyArray = new int[2];
        seekBar.getLocationOnScreen(xyArray);
        float textY = xyArray[1] - DPtoPixel((int) 118.75);

getLocationOnscreen()返回一个不正确的X值,由于某种原因,它在所有屏幕尺寸上精确地偏移了118.75dp(我不知道为什么)。 我简单地从给定的Y值中减去了该值,并找到了正确的位置。

链接地址: http://www.djcxy.com/p/64343.html

上一篇: How do I find the Y position directly above a SeekBar's thumb?

下一篇: How to listen to Seekbar thumb onClick events?