0

私は現在、浮動テキストがシークバーの上に表示されるようにしようとしていますので、同様にシークバーの親指上記の正確な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」との右上にあります。

enter image description here

アップデート:私は少しでこの問題を解決することになった

ハッキーなやり方。私は、シークバーの上にYの値を取得するには、以下の方法を利用:

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

でgetLocationOnScreen()何らかの理由で正確118.75dpすべての画面サイズの間で相殺され、誤ったX値を返します(私はなぜ知りません)。与えられたY値から値を引いただけで、正しい位置を見つけることができました。

答えて

0

アップデート:私はハック方法の少しでこの問題を解決することになった

。私は、シークバーの上にYの値を取得するには、以下の方法を利用:

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

でgetLocationOnScreen()何らかの理由で正確118.75dpすべての画面サイズの間で相殺され、誤ったX値を返します(私はなぜ知りません)。与えられたY値から値を引いただけで、正しい位置を見つけることができました。

関連する問題