2013-12-10 66 views
1

如何獲取SeekBar像素中拇指的當前位置?安卓Seekbar拇指在像素中的位置

目前我正在試圖獲得計算基礎上的位置。

屏幕寬度,搜索欄寬度,當前搜索進度和所有。但我無法從中獲得確切的位置。

有沒有人有任何想法?


其編碼如下。

我想在SeekBar拇指的頂部查找一個組件。

translation = calculateTranslation(this.deviceScreenWidth, seekBarWidth, seekBar1T.getMax(), Integer.valueOf(ConstantData.seekbar_fifth.toString()), topComponentWidth, 0); 
     if (currentapiVersion < android.os.Build.VERSION_CODES.HONEYCOMB){ 
      TranslateAnimation anim = new TranslateAnimation(translation - 1, 
        translation, 0, 0); 
      anim.setFillAfter(true); 
      anim.setDuration(0); 
      edtTextRodUpDown.startAnimation(anim); 
     }else{ 
      edtTextRodUpDown.setTranslationX(translation); 
     } 

,並計算翻譯像

private float calculateTranslation(int screenWidth, int seekBarWidth, int seekMaxProgress, int currentProgress, int componentWidth, int extraDifference){ 
    double calculatedPosition = 0f; 
    calculatedPosition = (double)((double)(seekBarWidth-((screenWidth-seekBarWidth)))/(double)seekMaxProgress) * (double)currentProgress; 
    calculatedPosition = calculatedPosition - (double)(componentWidth/2); 
    calculatedPosition = calculatedPosition + extraDifference; 
    Double d = new Double(calculatedPosition); 
    if(d < 0){ 
     return 0.0f; 
    }else if(d + componentWidth > screenWidth){ 
     return screenWidth-componentWidth; 
    }else{ 
     return d.floatValue(); 
    } 
} 

回答

12

我這樣做:

int width = seekBar.getWidth() 
      - seekBar.getPaddingLeft() 
      - seekBar.getPaddingRight(); 
int thumbPos = seekBar.getPaddingLeft() 
      + width 
      * seekBar.getProgress() 
      /seekBar.getMax(); 
+0

非常感謝!它爲我節省了很多時間! – KinGPinG

+0

如何在垂直搜索欄中獲取此信息 –

+0

@NaveenKumarM只需使用getHeight,getPaddingBottom和getPaddingTop即可。我不明白爲什麼這不起作用... – chw

1

搜索條拇指有一個拇指偏移,這基本上是一個輕微右移。所以,你必須確保你考慮到這一點,以及:

int thumbPos = seekbar.getMeasuredWidth() * seekbar.getProgress()/seekbar.getMax() - seekbar.getThumbOffset(); 
0

可以使用getBounds()得到這個信息..

低於此示例代碼例如對準TextViewseekbar拇指位置。

TextView sliderIndicator= ... Rect bounds = seekBar.getThumb().getBounds(); sliderIndicator.setTranslationX(seekBar.getLeft() + bounds.left);