2011-10-12 36 views
8

我已經自定義了我的SeekBar - 我使用自定義圖像作爲背景,並使用自定義圖像作爲拇指(How to create custom layout for seekbar in android? & How to customize the look of a SeekBar in Android?)。SeekBar自定義 - 如何正確定位自定義「拇指」圖像?

的想法是做一個搜索欄,看起來像在此圖像中的那些:

enter image description here

我希望有拇指圖像完全適合圓杆時progress值設置爲0或100(滿分100)。

爲了正確地定位拇指(即不重疊的棒的末端)我已經設置了paddingLeft & paddingRight值正好一半拇指寬度(Android: Seekbar doesn't scroll all the way to end)的寬度。

.../RES /佈局/ main.xml中:

<SeekBar android:id="@+id/frequency_slider" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:max="100" android:progress="0" 
    android:progressDrawable="@drawable/seekbar_no_visible_progress" 
    android:thumb="@drawable/seekbar_thumb" <!-- this is an image --> 
    android:background="@drawable/hos_bar" <!-- this is an image --> 
    android:paddingLeft="24dp" 
    android:paddingRight="24dp"> 
</SeekBar> 

這個工作在Android 2.1系統。


在Android 2.2的這會產生不同的效果:

enter image description here


經過進一步調查(與完全默認SeekBar嘗試此我發現,拇指圖像的位置已經從2.1變成了2.2,我修改paddingLeft & paddingRight不是問題。

  • 在2.1中,拇指集中在酒吧的末端,拇指的一半放在酒吧上,一半放在酒吧外面。
  • 在2.2中,拇指位於酒吧內,沒有任何重疊。因此,填充值會影響結果的奇怪方式。這正是我試圖實現的目標,但是當使用自定義的拇指時,這種效果不再以相同的方式工作。

我想我需要做一個自定義的Java類來處理這種類型的東西。在這個問題中(Possible to do rounded corners in custom Progressbar progressDrawable?),開發人員使用ClipDrawable來建立一個正常的進度條。

我會使用什麼類型的可繪製對象以及如何正確放置拇指?

回答

5

thumbOffset參數的行爲這兩個版本之間的變化。與提供的位置參數相比,ThumbOffset確定拇指圖像的實際偏移量。

1

嘗試使用這樣的:

<SeekBar android:id="@+id/seek" 
     android:layout_width="fill_parent" 
     android:layout_height="73dip" 
     android:max="80" 
     android:progress="12" 
     android:maxWidth="273dip" 
     android:maxHeight="73dip" 
     android:secondaryProgress="255" 
     android:background="@drawable/image2"  <!-- this is an image --> 
     android:progressDrawable="@drawable/image1" <!-- this is an image --> 
     android:thumb="@drawable/lock_thumb"        
     /> 

我已經嘗試這樣做,它與2.1和2.2完美的工作。

在你的情況,嘗試調整maxWidth,max和像我一樣的進步,並嘗試刪除填充。它可能會幫助你解決問題。

enter image description here

+0

謝謝。我更新了我的問題。我不想要的效果仍然存在(也在標準SeekBar上)。當進度值設置爲0或最大值時,我希望拇指圖像很好地適應條形的每個圓角端。 –

10
seekbar.setThumbOffset(0); 

在運行時。 不是來自XML!

解決了我的問題。

1

終於找到了答案,這裏的情況是,你必須使用android:thumbOffset,但android:thumbOffset與進度條沿着拇指地方制定者,但是,它的拇指長度它開始它是中心點,因此seekbar可以在其開始點調整拇指的中心點。所以,如果我們有一個拇指圖像與的寬度,所述thumbOffset必須(50/2),使得seekbar將在像素25拇指的調整零值這將使拇指看起來正好在中間。