我目前正在尝试在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值中减去了值,并且能够找到正确的位置。
答案 0 :(得分:0)
<强>更新强>
我最终以一种黑客的方式解决了这个问题。我使用以下方法检索SeekBar上方的Y值:
int [] xyArray = new int[2];
seekBar.getLocationOnScreen(xyArray);
float textY = xyArray[1] - DPtoPixel((int) 118.75);
getLocationOnscreen()返回一个不正确的X值,由于某种原因,所有屏幕尺寸都偏移了118.75dp(我不知道为什么)。我只是从给定的Y值中减去了值,并且能够找到正确的位置。