私は現在、浮動テキストがシークバーの上に表示されるようにしようとしていますので、同様にシークバーの親指上記の正確なX位置を見つけ解決していますどのようにしてSeekBarの親指の真上にあるYの位置を見つけることができますか?
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);
は今、私はトラブルシークバーの上で正確なY位置を見つけるのを持っています親指。私は現在、次の操作を実行しようとしています:
textY = seekBar.getY() - seekBar.getThumbOffset();
seekBarTextView.setX(textX);
seekBarTextView.setY(textY);
しかし、これはTextViewの設定中、問題のシークバーが緑色です(スクリーンショットに見られるように、数百ピクセルの親指の上にあることシークバーになり)番号「10」との右上にあります。
アップデート:私は少しでこの問題を解決することになった
ハッキーなやり方。私は、シークバーの上にYの値を取得するには、以下の方法を利用:
int [] xyArray = new int[2];
seekBar.getLocationOnScreen(xyArray);
float textY = xyArray[1] - DPtoPixel((int) 118.75);
でgetLocationOnScreen()何らかの理由で正確118.75dpすべての画面サイズの間で相殺され、誤ったX値を返します(私はなぜ知りません)。与えられたY値から値を引いただけで、正しい位置を見つけることができました。